I'm triyng to retrieve JSON format data using $.ajax
method of jquery from a php page, I get this error parseerror
when the code runs, but if I see the response of the server with firebug it's Ok.
Here's my script code:
$.ajax({
url: "php/selectedObjectRequest.php",
type: "POST",
dataType: 'json',
data: {},
success: function(data) {
var prova = jQuery.parseJSON(data);
alert(prova.museum);
},
error: function(jqXHR,textStatus,errorThrown) {
alert(textStatus);
}
});
And that's my server side code:
$arrayToEncode = array(
'museum' => 'bellearti',
'atwork' => 'davide',
'beaconCode' => '78888',
'qrCode' => '2252222'
);
echo json_encode($arrayToEncode);
How I can solve?
solved:
My error was an echo
to test before echo json_encode($arrayToEncode);
pay attention.
The parameter data
in your success
handler will be preprocessed because you told jQuery that the dataType
was JSON. You should be able to just use data.museum
. To make sure, console.log(data);
to see what it is.
the answer is: change prova.museum to data.museum
$.ajax({
url: "php/selectedObjectRequest.php",
type: "POST",
dataType: 'json',
data: {},
success: function(data) {
alert(data.museum); // add data.museum instant of prova.museum
},
error: function(jqXHR,textStatus,errorThrown) {
alert(textStatus);
}
});
Change the format
$arrayToEncode[] = array(
'museum' => 'bellearti',
'atwork' => 'davide',
'beaconCode' => '78888',
'qrCode' => '2252222');
echo json_encode($arrayToEncode, JSON_UNESCAPED_UNICODE);
So that you can call the return value like
for (var j = 0; j < data.length; j++) {
console.log(data[j].museum);
console.log(data[j].atwork);
console.log(data[j].beaconCode);
console.log(data[j].qrCode);
}
Try using this:
var parsed = JSON.parse(data);
This usually works for me.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.