jQuery在ajax json响应中循环
我有一个来自PHP的JSON响应,如下所示:jQuery在ajax json响应中循环,jquery,ajax,json,response,each,Jquery,Ajax,Json,Response,Each,我有一个来自PHP的JSON响应,如下所示: [[{"name":"J1","id":"0088","order":"2928868"}],[{"name":"J2","id":"0171","order":"2928868"}],[{"name":"J2","id":"0249","order":"2928868"}]] 我要做的是输出订单号,在id为#ordernum的元素中总是相同的 然后对于其他部分,我想在容器div中为name和id创建几个div 我很确定我可以让这个部分正常工作,但
[[{"name":"J1","id":"0088","order":"2928868"}],[{"name":"J2","id":"0171","order":"2928868"}],[{"name":"J2","id":"0249","order":"2928868"}]]
我要做的是输出订单号,在id为#ordernum的元素中总是相同的
然后对于其他部分,我想在容器div中为name和id创建几个div
我很确定我可以让这个部分正常工作,但我不确定的是如何循环每个JSON行,以到达我可以创建div的部分
这是我到目前为止所拥有的,但它附加到一个div,我想在其中创建新的div
我是否需要在$('#ordernum').text(第[0]行).order)之后再执行一次$.each()
我认为一切正常 只有响应。订单将显示未定义 如果。每个循环都没有按照所说的那样工作,则将其置于循环之前 var response=$.parseJSON(响应) 如果你需要解决,比如
[{"name":"J1","id":"0088","order":"2928868"},{"name":"J2","id":"0171","order":"2928868"},{"name":"J2","id":"0249","order":"2928868"}]
然后在php代码中,您可以在最后一行的第二行中执行
$output[] = $array[0];
那么您就不需要javascript中的索引了
$('#ordernum').text(row[0].order);
将此代码放入fire bug控制台
var response =[[{"name":"J1","id":"0088","order":"2928868"}],[{"name":"J2","id":"0171","order":"2928868"}],[{"name":"J2","id":"0249","order":"2928868"}]];
console.log(response.length);
console.log(response.order);
$.each(response, function(index, row) {
console.log(row[0].name);
});
并检查结果
您可以在第一个循环下创建div,不需要第二个循环,就像您不更改响应一样,或者您可以重新格式化它。Try
var response=JSON.parse(response)代码>在成功处理程序中。为什么有数组?响应可以重新格式化为[{“name”:“J1”,“id”:“0088”,“order”:“2928868”},{“name”:“J2”,“id”:“0171”,“order”:“2928868”},{“name”:“J2”,“id”:“0249”,“order”:“2928868”}
尝试使用$('#ordernum')。text(row.order);谢谢你的回复。我已经完成了php端的json响应,并且得到了您得到的结果,但是现在我得到了这个错误SyntaxError:json.parse:unexpected字符,当使用var response=$.parseJSON(response)并使用.each时。有没有可能把它放在小提琴里,这样我就可以看到它工作了?您可以先在json.parser.online.fr上检查有效的json。不停摆弄
$('#ordernum').text(row[0].order);
var response =[[{"name":"J1","id":"0088","order":"2928868"}],[{"name":"J2","id":"0171","order":"2928868"}],[{"name":"J2","id":"0249","order":"2928868"}]];
console.log(response.length);
console.log(response.order);
$.each(response, function(index, row) {
console.log(row[0].name);
});