我遇到了这个错误,告诉我有一个意外的令牌C指向我的Jquery文件。经过大量研究后,我假设我得到此错误的原因是因为传回的Json值已经被解码,因此再次解码将导致此错误。
这句话是真的吗?或者还有其他原因吗? 这是我的json数据的样子 [{“comments”:“Greta”},{“comments”:“John”}]
<a onclick="showUser('.$row['ID'].')" >Show Comments</a>
<script>
function showUser(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
$.ajax({
type:'post',
url: 'viewCommentsJson.php',
data:{q:str},
success:function(data)
{
data = $.parseJSON(data);
var response;
$.each(data, function(index, value){
response += value+'<br />';
});
$('#txtHint').html(response);
}
});
}
</script>
答案 0 :(得分:3)
原因是,您正在尝试解析已经采用json格式的响应。
$.parseJSON
方法应适用于string
类型。由于您的服务器响应为json
,因此您无需再次解析它。
像这样更改你的代码,
$.ajax({
type: 'post',
url: 'viewCommentsJson.php',
data: {
q: str
},
success: function (data) {
var response = "";
$.each(data, function (index, value) {
response += value.comments + '<br />';
});
$('#txtHint').html(response);
}
});
答案 1 :(得分:1)
这是可以推测的,因为响应是“连接失败...&#39;当您拒绝连接时,您正在尝试将数据库输出解析为JSON。
这会导致C被解析并抛出一个&#34; Unexpected token C&#34;错误。
检查您的网络&#39;检查器中的选项卡,然后查找.PHP SQL脚本。至少在chrome检查器中,您可以获得响应并查看您获得的响应类型。