简体   繁体   中英

retrieve data using json and jquery ajax call no work

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);
    }
});

FIDDLE

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM