这个php:
$token = NoCSRF::generate( 'csrf_token' );
$status = "succeed";
$message = "Update done!";
$return = array($status,$message,$token);
//header('Content-type: application/json');
echo json_encode($return);
返回
"↵["succeed","Update done!","MTQ0NDcxNzM3Nm9nUTRCVzRKOXc5RXFocUZodXh5eXo4Tm5waTlzZ05a"]"
到js无法处理的浏览器。
如果我取消注释php中的标题行,则返回
["succeed", "Update done!", "MTQ0NDcxNzIyNnAwY01LMVZHdXV6TE1ZT3FZZHhpd2JZcnM0RTl0Rm81"]
并且运作正常
知道这里发生了什么吗?我不能只删除标题行,因为这个解决方案在现场托管网站上不起作用,尽管它上面的我的开发网站也是如此...
答案 0 :(得分:0)
这与默认情况下,json是通过text/html
发送的事实有关。使用Content-type: application/json
时,浏览器接受可以在javascript中操作的JSON编码数据。
此question中提供了更多信息。
答案 1 :(得分:0)
@ Josh在this thread中的beforeSend代码已经为我排序了这个:
var jsonMimeType = "application/json;charset=UTF-8";
$.ajax({
type: "GET",
url: myURL,
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType(jsonMimeType);
}
},
dataType: "json",
success: function(data){
// do stuff...
}
});