Using JavaScript to access a JSON array from PHP
I'm trying to understand how my PHP script can pass an array to my JavaScript code. Using the following PHP, I pass an array:
$c = array(3,2,7);
echo json_encode($c);
My JavaScript is as follows:
$.post("getLatLong.php", { latitude: 500000},
function(data) {
arrayData = data
document.write(arrayData)
document.write(arrayData[0]);
document.write(arrayData[0]);
document.write(arrayData[0]);
});
</script>
What is printed out on the screen is
[3,2,7][开发者_如何学C3,
I'm trying to understand how json_encode works - I thought I would be able to pass the array to a variable, and then access it like a normal JavaScript array, but it views my array as one large text string. How do ensure that it reads it like an array?
Pass the dataType
argument to $.post
:
$.post("getLatLong.php", { latitude: 500000},
function(data){
// ...
}, 'json');
Then data
will be properly decoded.
Alternatively you can also use $.parseJSON
in the callback.
Explanation of JSON:
JSON is a data exchange format. It specifies the structure of the data string that is transmitted. json_encode
takes a PHP data structure like an array or an object and transformes it to JSON, i.e. a string with a certain format.
json_encode($c)
will give you the string "[3,2,7]"
.
On the client site, you receive that string, but you have to decode it in to proper JavaScript data structures. So $.parseJSON(data)
will give you a JavaScript array with 3 elements (or if you pass 'json' as third parameter to .post()
, jQuery is doing the decoding automatically for you).
精彩评论