获取密钥=>来自php的json数组的值

时间:2013-03-05 13:57:41

标签: php javascript jquery arrays json

我正在尝试从PHP获取数组并使用jQuery进一步操作它。在我的PHP文件中,我做echo json_encode($data),当我在jQuery的响应中发出警报时,我得到:

[
    {
        "CustomerID": "C43242421",
        "UserID": "432421421",
        "Customer": "rqewrqwreeqwr",
        "Add1": "rqwerqwreqwrqwrqwr",
        "Add2": " ",
        "Add3": " ",
        "Phone": "4131231",
        "Fax": "532442141",
        "Contact": "reqwrqwrw",
        "Email": "gfdgdsg",
        "PaymentTerm": null,
        "Country": "3231",
        "City": "111",
        "Zip": " "
    }
]

,这是一个有效的json数组。现在,我尝试进一步做的是将对作为键=>像我在php中的关联数组中那样的值。

$.post("templates/test.php",
    {data: query,
     cond: $(this).text(),
     action: 'select'
     },
function(res) {
    alert(res) //outputs what i pasted above
    $.each($.parseJSON(res), function(key, value) {
        alert(key + value);
        //this outputs: 0[object Object]
});

删除上述函数中的$.parseJSON会在Firebug错误日志中显示invalid 'in' operand e on jquery.min.js(line 3)。您可以帮助我解决问题吗?

5 个答案:

答案 0 :(得分:4)

尝试:

var r = $.parseJSON(res);

$.each(r[0], function(key, value) {
        alert(key + value);

});

答案 1 :(得分:1)

$.parseJSON(res)的结果是一个数组,包含一个元素(一个对象)。当您遍历该数组时(使用$.each),value表示存储在数组当前索引处的整个对象。您需要迭代该对象以输出其属性:

$.each($.parseJSON(res)[0], function(key, value) {
    alert(key + ' = ' + value);
});

如果你有一个包含多个对象的数组,这个更通用的代码应输出所有这些对象的键值对:

$.each($.parseJSON(res), function(index, arrayObject) {
    $.each(arrayObject, function(key, value) {
        alert(key + ' = ' + value);
    });
});

答案 2 :(得分:0)

res = $.parseJSON(res);

for (var i = 0; l = res.length; i < l; i++) {
   data = res[i];
   customer = data.Customer;

}

你有一个对象数组。您可以像上面的代码一样遍历对象数组。

答案 3 :(得分:0)

试试这个:

$.getJSON('your-json-string-file.php', function (data) {

  $.each(data, function(key, val) {
    alert(key +'=>'+ val)
  });

});

希望这会对你有所帮助

答案 4 :(得分:0)

你可以从json获得某种对象:

function parse_json(res)
{
  try{
    return eval('(' + response + ')');
  }
  catch(e){
    // invalid json
  }
}