jQuery.ajax()调用返回JSON.parse意外字符错误

我正在尝试调试以下jQuery.ajax()调用:

var rollnum = $('#rollNum').val() $.ajax({ url: sURL + "myController/myMethod", type: "POST", data: {rollnum: rollnum}, dataType: 'json', success: function(json){alert(json)}, error:function (xhr, ajaxOptions, thrownError){ alert(xhr.status); alert(thrownError);} }); 

这是方法:

 function myMethod(){ $query = $this->db->query("SELECT tblontario.Address, tblontario.Municipality FROM tblontario WHERE RollNum = 211010002528200"); $json_address = array(); $json_municipality = array(); foreach ($query->result_array() as $row){ $json_address[] = $row['Address']; $json_municipality[] = $row['Municipality']; } $json['address'] = $json_address; $json['municipality'] = $json_municipality; echo json_encode($json); exit; } 

目前发生的事情是我收到了错误。 错误包含以下详细信息:

 xhr.status: 200; and thrownError: SyntaxError: JSON.parse: unexpected character 

当我查看firebug中的XHR Response选项卡时,它显示:

 Reload the page to get source for: http://www.mysite.ca/myController/myMethod 

似乎有些东西正常工作,因为我们得到了200的xhr.status,但我似乎无法从此调用中检索json数据。 任何人都可以给我一个建议,问题可能是什么? 谢谢。

将内容的标题设置为json的类型…以下是设置标题类型的示例。

 header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-type: application/json'); 

在jQuery 1.4之后,JSON数据以严格的方式解析。

任何格式错误的JSON都会被拒绝,并抛出一个解析错误。

服务器返回一个重定向页面,其中包含代码200而不是重定向代码之一。 AJAX调用不会重定向,因为状态代码是200,并且它无法解码响应,因为它不是JSON。

使服务器返回正确的状态代码,或者以纯文本forms请求页面,以便您可以检查它并在解码之前查找重定向消息。

在文本编辑器中关闭BOM(在没有BOM的情况下编码UTF-8)。 BOM是UTF8文件开头的系统(不可见)符号。