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][3,
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
dataTypeargument to$.post:Then
datawill be properly decoded.Alternatively you can also use
$.parseJSONin the callback.Explanation of JSON:
JSON is a data exchange format. It specifies the structure of the data string that is transmitted.
json_encodetakes 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).