无法使用jquery$.ajax访问从php页面检索到的json数据

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

本文关键字:面检索 php 数据 json 访问 jquery ajax      更新时间:2023-09-26

如何在JavaScript中访问此json数据。当我提醒它时,结果是undefined

这是jQuery代码

$.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']);
    }
});

这是PHP代码

            $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;

我已经独立测试了PHP文件,json数据输出如下:

      [{"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']);
    }
});

您可以通过访问数据

data[0].Result

它是一个Object,而不是数组。

所以data[0]['Result']不是的正确方式

编辑:由于你有更多的对象,你必须这样做一个循环:

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

当你看到类似的东西时

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

你可以通过与上面相同的方式访问它:

name_of_the_object.foo

将具有值"bar"

尝试添加解析JSON。我已补充。现在它可能是工作。

$.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']);
    }
});