简体   繁体   中英

Unable to access json data retrieved from php page using jquery $.ajax

How to access this json data in JavaScript. when I alert it the result is undefined

Here is jQuery code

$.ajax({
    type: "POST",
    url: "frmMktHelpGridd.php",
    data: {
        labNo: secondElement
    },
    dataType: "json",
    beforeSend: function () {
        // Do something before sending request to server
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert('error has occured');
        alert(errorThrown);
    },
    success: function (data) {

        //Here is the problem

        alert(data[0]['Result']);
    }
});

This is PHP code

            $data=array($no);
    for($i=0;($i<$no && ($row=mysql_fetch_array($result)));$i++)
    {
        $data[$i]=array();
        $data[$i]['Result']         =   $row['Result'];         
        $data[$i]['TestCode']       =   $row['TestCode'];           
        $data[$i]['TestStatus']     =   $row['TestStatus'];         
        $data[$i]['SrNo']           =   $row['SrNo'];               
    }

    $data1=json_encode($data);

    echo $data1;
      exit;

I have tested the PHP file independently, The json data is output as follows:

      [{"Result":"1","TestCode":"22","TestStatus":"0","SrNo":"1"},{"Result":"1","TestCode":"23","TestStatus":"1","SrNo":"2"}]
$.ajax({
    type: "POST",
    url: "frmMktHelpGridd.php",
    data: {
        labNo: secondElement
    },
    dataType: "json",
    beforeSend: function () {
        // Do something before sending request to server
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert('error has occured');
        alert(errorThrown);
    },
    success: function (data) {
        //Added parse json
        var data = jQuery.parseJSON(data)

        alert(data[0]['Result']);
    }
});

You can access to your data by doing

data[0].Result

It's an Object, not an array.

so data[0]['Result'] it's not the proper way

EDIT : Since you have more objects, you have to do a loop this way:

$.each(data, function(key, val){
    console.log(val.Result);
    console.log(val.TestCode);  
    //...
});

When you see something like

{
    "foo":"bar",
    ...
}

you can access to it the same way as above:

name_of_the_object.foo

that will have the value "bar"

Try to add parse JSON. I have added. Now it may be work.

$.ajax({
    type: "POST",
    url: "frmMktHelpGridd.php",
    data: {
        labNo: secondElement
    },
    dataType: "json",
    beforeSend: function () {
        // Do something before sending request to server
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert('error has occured');
        alert(errorThrown);
    },
    success: function (data) {
        //Added parse json
        var data = $.parseJSON(data)

        alert(data[0]['Result']);
    }
});

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