使用$.each遍历PHP数组
我使用jQuery构建了一个Ajax请求,其中在PHP文件的末尾,一个数组是结果:使用$.each遍历PHP数组,php,jquery,Php,Jquery,我使用jQuery构建了一个Ajax请求,其中在PHP文件的末尾,一个数组是结果: echo json_encode(array('status' => 'true')); 在调用文件中的jQuery中,我想读取状态是否为true,我尝试了以下方法: $.ajax({ type: "GET", url: "logic.php", data: "receiver=" + receiverIds + "&subject=" +
echo json_encode(array('status' => 'true'));
在调用文件中的jQuery中,我想读取状态是否为true
,我尝试了以下方法:
$.ajax({
type: "GET",
url: "logic.php",
data: "receiver=" + receiverIds + "&subject=" + subject + "&msg=" + msg,
success: function(data){
$.each(data, function (i, elem) {
alert(elem.status);
});
}
});
但警报总是未定义
。当我在$之前插入此行时。每个:
$("#additionalTextDiv").html(data);
我得到以下结果:{“status”:“true”}
但是为什么每个函数都不能正常工作呢
谢谢 将AJAX调用中设置的选项对象的dataType
属性更改为json
,以便将json字符串解析为JavaScript对象:
$.ajax({
type: "GET",
url: "logic.php",
dataType: 'json',
...
.ajax()
:
您的$。each()
循环工作正常,下面是一个演示:
但是,如果要循环大量记录,则
的循环将执行得更快:
for (var i = 0, len = data.length; i < len; i++) {
alert(data[i].status);
}
for(变量i=0,len=data.length;i
下面是一个演示:您必须首先将响应解析为JavaScript对象。PHP的结果不是JSON编码的数组,而是JSON编码的对象。然后,如果您使用$对其进行迭代,i
将是属性名,elem
将是值,但您也可以在解析后使用obj.status
访问它。仅供参考json_encode(数组('status'=>true')代码>不会在JavaScript中转换为数组。它很可能最终出现在一个JavaScript对象中,该对象看起来像{status:“true”}
,您不想循环使用它。感谢您的快速回复,但消息仍然是“未定义的”。我刚刚添加了dataType='json',
我必须保持json_encode-PHP函数正确吗?如果php脚本中没有json_编码,我也没有结果。或者我应该更改php脚本并删除array()?@Torben检查从php脚本返回的JSON是否如下:[{“status”:“true”}]
,因为这是代码工作所必需的格式;对象数组。放置console.log(数据)
在成功
回调函数的开头,查看它在控制台中的输出。它显示Object,当我单击左侧的箭头时,我看到状态:“true”。。。php代码看起来仍然是这样的echo json_encode(数组('status'=>'true')
如果没有数据类型:“json”,控制台中的结果看起来是这样的:{“status”:“true”}
@Torben那么您应该能够忘记循环并像这样访问数据:success:function(data){alert(data.status);}