使用$.each遍历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=" +

我使用jQuery构建了一个Ajax请求,其中在PHP文件的末尾,一个数组是结果:

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);}