我正在尝试从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)
。您可以帮助我解决问题吗?
答案 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
}
}