从jquery访问json数据

WWW*_*RDS 7 javascript ajax jquery json

我正在使用jQuery 1.4.2创建一个ajax应用程序,我尝试使用get(),post()和ajax()方法本身.我的php服务返回:

[{"k":"label0","v":0.5},{"k":"label1","v":99.43},{"k":"label2","v":2.46},{"k":"label3","v":46.29},{"status":"OK"}]
Run Code Online (Sandbox Code Playgroud)

在我的成功回调中,我尝试访问json.status和json [0] [0],但它总是返回"undefined".我究竟做错了什么?

function getSysinfo(source) {
    var json = null;
    $.ajax({
        url: source,
        type: 'POST',
        dataType: 'json',
        success: function (data) {
            json = eval("(" + data + ")");
            $('#data').html(json.status);
            alert(json[0][0]);
            refreshChart(json);
        },
        error: function (request, status, error) {
            alert("REQUEST:\t" + request + "\nSTATUS:\t" + status + 
                  "\nERROR:\t" + error);
        }
    });
    return json;
}
Run Code Online (Sandbox Code Playgroud)

我一直在谷歌搜索这几天.我如何访问返回的数据?任何帮助,将不胜感激.

and*_*ncx 9

要访问该状态值,您需要:

data[4].status
Run Code Online (Sandbox Code Playgroud)

这是因为它是一个存储在数组中第五个元素中的对象,它是对象的status一个属性.


Mar*_*rth 8

您的JSON数据如下所示:

[
    {
        "k": "label0",
        "v": 0.5
    },
    {
        "k": "label1",
        "v": 99.43
    },
    {
        "k": "label2",
        "v": 2.46
    },
    {
        "k": "label3",
        "v": 46.29
    },
    {
        "status": "OK"
    }
]
Run Code Online (Sandbox Code Playgroud)

你必须阅读你的状态

json[4].status
Run Code Online (Sandbox Code Playgroud)

4作为神奇数或length-1-不希望的.我会考虑修改你的服务器响应更有用的东西,如下所示:

{
    "status": "OK",
    "entries": [ ... ] // add your data here
}
Run Code Online (Sandbox Code Playgroud)


Lor*_*nzo 6

在你的成功回调尝试:

var parsed = $.parseJSON(data);
$.each(parsed, function (i, jsondata) {
    alert( jsondata.k );
    alert( jsondata.v );
});
Run Code Online (Sandbox Code Playgroud)


nat*_*ood 5

你不需要eval("("+data+")");. jQuery 会自动为您解析 JSON 响应,因为您指定了dataType:'json'

来自数据类型的 jQuery 文档:

“json”:将响应评估为 JSON 并返回一个 JavaScript 对象。在 jQuery 1.4 中,JSON 数据以严格的方式解析;任何格式错误的 JSON 都会被拒绝并引发解析错误。(有关正确 JSON 格式的更多信息,请参阅 json.org。)

  • 不。坏的。`JSON.parse()`。不要对 JSON 使用 `eval`。坏的。 (2认同)
  • 我不提倡使用 eval。我只是说他不需要它。此外,并非所有浏览器(尤其是旧浏览器)都支持 JSON.parse。使用诸如 $.parseJSON 之类的东西来根据浏览器做出明智的决定可能会更好。 (2认同)