[英]How to iterate through JSON encoded object in php using javascript
我正在尝试使用以下方法获取来自php的数据:
echo json_encode($rows);
当我注释掉数据类型:'json'时,我可以看到正常编码的json字符串,但是当我使用它时,警报会向我显示对象数组。 当我尝试获取该对象数组的长度时,我得到1,但其中应该超过20个项目。 我尝试在此处进行搜索,并尝试了遍历json的不同操作,但由于某种原因,这些都不对我有用。 我正在使用
mysqli_set_charset($connect, "utf8");
在我对PHP的选择语句之前。 这是我的ajax电话:
function search() {
$.ajax(
{
url: "getFiles.php",
dataType: 'json',
type: "POST",
data: {Filter: $("#txtSearch").val()},
cache: false,
async: false,
success: function(data)
{
var jsonData = JSON.parse(data);
alert(data);
$.each(data, function(index, val)
{
alert(val.iddocuments);
alert(val.docName);
alert(val.fileName);
alert(val.fl1);
alert(val.dateModified);
});
}
});
}
问题在于您使用json_encode()在PHP方面:
http://php.net/manual/zh/function.json-encode.php
引用函数定义:“字符串json_encode(混合$ value [,int $ options = 0 [,int $ depth = 512]])”,以下内容:
<?php
echo "Associative array always output as object: ", json_encode($d), "\n";
echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>
将输出以下内容:
Associative array always output as object: {"foo":"bar","baz":"long"}
Associative array always output as object: {"foo":"bar","baz":"long"}
JSON_FORCE_OBJECT(整数)当使用非关联数组时,输出对象而不是数组。 当输出的接收者期望对象并且数组为空时,此功能特别有用。 自PHP 5.3.0起可用。
类似的“简写”版本为:
json_encode($d, true);
还值得一提的是,应在回显输出数据之前设置正确的输出头:
header('Content-Type: application/json');
最终 ,如果您使用的是PHP 5.4或更高版本( 应该是),则实现JsonSerializable接口是最好的选择,因为从JSON的角度来看,它允许更灵活地表示数据。
问题可能与您序列化为json格式的数组的结构有关。 使用PHP中的var_dump($rows)
进行检查,以查看确切的结构,并且该结构应与客户端上使用的结构(在JavaScript代码中)相匹配。
在客户端,您可以进行一些调试以准确了解所接收内容的结构,例如,调用success
函数中的console.log(data)
。 无论如何,必须在服务器端添加标header('Content-Type: application/json');
并在客户端添加dataType: 'json',
以便jQuery知道如何解析数据并将其作为JavaScript数组提供给您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.