我有两个页面使用相同的js文件来调用某些PHP文件并以JSON格式从那里获取数据。虽然PHP文件中获取的数据和输出的数据完全相同,但第二页上的Ajax会返回' parsererror' SyntaxError:JSON.parse:JSON数据第1行第1列的意外字符。
$.ajax({
type: 'POST',
dataType: "json",
data: {objtyp: this.objtyp, objid: this.objid},
url: '/admin/getfieldsadd.php',
success: function(data) {
//not going to happen
},
error: function (xhr, status, text) {
switch (status) {
case 404:
alert('File not found');
break;
case 500:
alert('Server error');
break;
case 0:
alert('Request aborted');
break;
default:
alert('Unknown error: ' + status + " " + text);
}
}
那么有人遇到过同样的问题吗?
答案 0 :(得分:0)
这听起来让人想起dreaded BOM。摘录自该链接:
在使用Unicode字符编码的页面的开头 可能会找到一些代表Unicode代码点U + FEFF BYTE的字节 ORDER MARK(缩写为BOM)。
正确使用时,BOM是不可见的。
也许检查文件的编码是否设置为 UTF8无BOM 。
答案 1 :(得分:0)
可能是mime类型错误。
尝试在AJAX调用中添加这样的beforeSend属性:
$.ajax({
type: 'POST',
dataType: "json",
data: {objtyp: this.objtyp, objid: this.objid},
url: '/admin/getfieldsadd.php',
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType("application/json");
}
},
...
}
答案 2 :(得分:0)
似乎问题出现在jQuery版本中。现在它已经更新了所有似乎工作正常。