我使用以下php代码创建JSON数据:
if($res = $db->query('Select row1 from table1')){
while($row = $res->fetch_row()){
$json[] = $row;
}
}
sort ($json);
$json = json_encode($json);
echo $json;
结果是[["1"],["2"],["3"]]
当我尝试用jquery ajax 获取这些数据时
<div id="output">JSON will be put here</div>
<script language="javascript" type="text/javascript">
$(function () {
$.ajax({
url: 'json.php',
dataType: 'json',
data: '',
error: function(request,error) {
alert(error);
},
success: function(data) {
var json = data[0];
alert(json);
$('#output').html(json+", ");
}
});
});
上面写着:"parseerror"
我搜索了很多(这里是Stack Overflow),但我的jQuery版本似乎是正确的(1.7.2),重新格式化JSON输出也没有帮助(我删除了左括号,并尝试了很多其他事情)
有什么想法吗?
解析ajax结果中返回的数据,
var retData= JSON.parse(data);
在使用之前,您应该检查是否获得了对象:
if(typeof data != 'object')
data = $.parseJSON(data);
有时它被解释为一个字符串,您必须首先将其转换为
我认为您不需要在数组中推送它。您的查询已经是一个数组。所以试着只使用json_encode(),这会提醒数据你得到了什么,并尝试使用data.somevariable访问数据(至少我在ajax中是这样访问json数据的)。
希望它能帮助
验证响应标头的内容类型(您可以在任何现代浏览器的网络控制台中看到这一点)。它需要以application/json的形式返回。任何其他类型都可能导致Javascript失败。在PHP文件中回显JSON之前,请尝试添加:
header('Content-Type: application/json');
这将明确而正确地设置响应内容类型。请记住,这首先取决于您的返回字符串是否是有效的JSON,它似乎是。