jQuery循环通过ajax json响应

时间:2014-02-03 08:33:16

标签: 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中为名称和id创建几个div。

我很确定我可以使用它,但我不确定的是如何遍历每个JSON行以到达我可以创建我的div的部分

这是我到目前为止所做的,但这会附加到div,我想创建新的div。

我需要在$('#ordernum')之后再做一个$ .each()。text(row [0] .order);?

$.ajax({
    type: "POST",
    url: "check.php",
    data: { order: order },
    dataType: "json",
    cache: false,
    success: function(response) {

        if(response.length != 0) {
            console.log(response.order);
            $.each(response, function(index, row) {

                console.log(row);
                $('#ordernum').text(row[0].order);

                $('.name').append(row[0].name+"<br />");
                $('.id').append(row[0].id+"<br />");
            });
        }
        else {
            $('#foo').text('Order number not found!!');
        }

        // set the focus to the order input
        $('#order').focus().val('');
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
        console.log('An Ajax error was thrown.');
        console.log(XMLHttpRequest);
        console.log(textStatus);
        console.log(errorThrown);
    }
});

修改

这就是json的创建方式。 $ rows来自SQLSERVER数据库的查询,我遍历它以获取MySQL数据库中的所有行

foreach($rows as $row) {

    $sql = 'SELECT bin, id FROM totebin WHERE id= :id';

    $stmt = $db->prepare($sql);
    $stmt->bindValue(':tote', trim($row['id']));
    $stmt->execute();

    $array = $stmt->fetchAll(PDO::FETCH_ASSOC);

    $array[0]['id'] = str_pad($array[0]['id'], 4, '0', STR_PAD_LEFT);
    $array[0]['order'] = trim($row['order']);

    $output[] = $array;
}

echo json_encode($output);

1 个答案:

答案 0 :(得分:2)

我认为一切正常 只需 response.order 就会说未定义。

如果.each循环不起作用然后放在循环之前     var response = $ .parseJSON(response)。

如果你需要像

那样的回复
[{"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,你不需要第二个,就像你不改变你的反应,或者你重新格式化它。