如何使用ajax,json和php迭代jquery中的多行?

时间:2011-12-09 18:10:25

标签: php jquery ajax json

我有一个像这样返回json的php页面:

while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        $rows[] = $row;
}
print json_encode($rows);

当我运行php页面时,我得到了类似的内容:

[{"phone":"1234567"},{"phone":"1234567"}]

这是我的jquery代码:

   $.ajax({
        url: 'test.php',
        type: 'POST',
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        success: function(response) {

             $.each(response, function() { 
                $.each(this, function(key, value){
                    alert(key + " --> " + value); 
                });
            });

        }
   });

});

我从另一个问题中得到了这个。这将在警报中提供我的钥匙和价值。这只是为了确保一切正常。我已经搜索但无法弄清楚如何获得一个值。说我想要这个名字,我该怎么办?我试过了:

success: function(response) {
 var obj = $.parseJSON(response);
 alert( obj.phone );
}

但是因为它是多行,所以除非我有,否则它不会工作,当我有这样一行时它也会失败:

echo json_encode(array("phone" => "123")

如何从一行中获取单个值? 如何迭代多行并只获取其中一个列值?

3 个答案:

答案 0 :(得分:3)

response变量是一个对象数组。要访问response变量中的单个索引:

var phone = response[0].phone;//replace `0` with the index you want

如果你最终在循环中迭代你的响应,请确保这样做以获得最佳性能:

var len = response.length;
for (var i = 0; i < len; i++) {
    console.log(response[i].phone);
}

检查此jsperf以查看此类型循环的速度比for(i in array)快多少:http://jsperf.com/for-in-tests

答案 1 :(得分:2)

响应JSON是一个数组。要获取第一个电话号码,请通过response[0]检索第一个对象,然后使用.phone获取该属性:

    success: function(response) {  //response = array, when using dataType:"JSON"
         alert(response[0].phone);
    }

将0替换为0和response.length之间的任意数字,以获取相应的电话属性。

答案 2 :(得分:0)

使用Javascript:

for (var i; i < response.length; i++) {
    console.log(response[i].phone);
}