未捕获的SyntaxError:意外的令牌C - JQUERY - 传递和解码Json

时间:2014-05-20 13:03:45

标签: jquery ajax json

我遇到了这个错误,告诉我有一个意外的令牌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>

2 个答案:

答案 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检查器中,您可以获得响应并查看您获得的响应类型。