我有一个像这样返回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")
如何从一行中获取单个值? 如何迭代多行并只获取其中一个列值?
答案 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);
}