我正在尝试调试以下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数据。任何人都可以给我一个建议,问题可能是什么?感谢。
答案 0 :(得分: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都会被拒绝,并且会抛出一个解析错误。
答案 1 :(得分:1)
服务器返回一个代码为200的重定向页面,而不是其中一个重定向代码。 AJAX调用不会重定向,因为状态代码是200,并且它无法解码响应,因为它不是JSON。
使服务器返回正确的状态代码,或者以纯文本形式请求页面,以便您可以检查它并在解码之前查找重定向消息。
答案 2 :(得分:0)
在文本编辑器中关闭BOM(在没有BOM的情况下编码UTF-8)。 BOM是UTF8文件开头的系统(不可见)符号。