0

我正在尝试调试以下 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 数据。谁能给我一个关于问题可能是什么的建议?谢谢。

4

3 回答 3

3

将内容的标头设置为 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 并引发解析错误。

于 2012-07-19T05:36:14.357 回答
1

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

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

于 2012-07-19T05:31:27.583 回答
0

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

于 2013-05-28T21:27:02.020 回答