我用jQuery创建了一个AJAX函数。该函数正常工作,服务器返回JSON,但我不能在我的JS脚本中使用它
服务器端:
$array = array();
$array["count"] = count($accounts_list)."";
for($i=0; $i<count($accounts_list); $i++)
{
$account = $accounts_list[$i];
$array["marker"]["name"] = $account->name;
$array["marker"]["lat"] = $account->map_latitude;
$array["marker"]["lon"] = $account->map_longitude;
}
echo json_encode($array);
客户方:
$.ajax({
type: "POST",
url: "index.php?module=cap_Maps&action=AddMarkers",
data: dataString,
dataType: "json",
success: function(data) {
if (data == "error"){
$(".tr_legend").before("<tr><td colspan='2' id='error'><span class='error_maps'>Erreur lors du chargement des marqueurs</span><td><tr>");
}
else {
alert(data);
var obj = jQuery.parseJSON( data )
alert (obj.count);
}
}
});
JSON按服务器返回:
{"count":"371","marker":{"name":"WAMPFLER","lat":"49.02751610","lon":"2.10611230"}}
函数alert(data)
返回我的JSON,但是如果我尝试使用jQuery.parseJSON( data )
解析它,它就不起作用且alert(obj.count);
无法打开。
修改
我添加了错误功能:
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
},
发生错误:
XMLHttpRequest={"count":"358"}
textStatus=parsererror
errorThrown=Invalid JSON: {"count":"358"}
修改
如果我的AJAX中有contentType: "application/json",
,我可以返回一个静态字符串,它被认为是json,但如果我尝试在我的服务器上执行其他php代码,AJAX会返回500 Internal server error
答案 0 :(得分:1)
试试这个:
var json = jQuery.parseJSON('{"count":"371","marker":{"name":"WAMPFLER","lat":"49.02751610","lon":"2.10611230"}}');
alert(json.count);
也许你忘记给parseJSON一个字符串'。
答案 1 :(得分:0)
答案 2 :(得分:0)
而不是使用parseJson,你可以尝试使用eval。
$.ajax({
type: "POST",
url: "index.php?module=cap_Maps&action=AddMarkers",
data: dataString,
dataType: "text",
success: function(data) {
if (data == "error"){
$(".tr_legend").before("<tr><td colspan='2' id='error'><span class='error_maps'>Erreur lors du chargement des marqueurs</span><td><tr>");
}
else {
alert(data);
var obj = eval(data);
alert (obj.count);
}
}
});
HTH。
答案 3 :(得分:0)
看起来您没有从服务器发送具有适当格式的JSON,尝试使用json_encode()函数。
答案 4 :(得分:0)
输出缓冲区没有为空,因此AJAX收到缓冲区内容+ JSON,因此它不是有效的JSON。
在输出我的JSON之前,我在服务器端使用ob_clean()
,它解决了问题。