好的,这个问题已经被问得非常频繁并且有很多变化,但是我仍然没有找到任何能够使我摆脱这种折磨的答案。
我的代码在Safari、Internet Explorer v.8上运行良好。然而,在Chrome浏览器中,只有特定的组合(涉及链式's)才会抛出"SyntaxError:Unexpected token"消息。
以下是我从一个ASP(经典)页面返回的JSON。它适用于99%的输入,但对于以下JSON文本,它会抛出错误:
{"queryStatus":"Not_Empty", "printID":["50674","54648","50437","37564","37566","37565","49124","null"], "printName":["BBB-12312313","BBB-1558","BBB-2-065 + 2-066","BBB-2-217","BBB-2-217b","BBB-2-226/2-217b ","BBB-2-5961b","null"]}
现在,我的JS代码如下:
$.ajax({
type: "GET",
url: "callbacks/xmlHTTPRequestGetPrintItems.asp?LabelID=" + $("#LicenseLabel").val() + "&RequestType=0",
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data, textStatus, jqXHR) {
if (data.queryStatus == "Not_Empty") {
for (i = 0; i < data.printID.length - 1; i++) {
$('#ApprovalItem').append($('<option>', { value: data.printID[i] }).text(data.printName[i]));
}
}
},
error: function (xhr, ajaxOptions, thrownError) { alert(thrownError); }
});
结果:"语法错误:未预期的标记"
以下是我的尝试:
1.更改“contentType”/删除它,包括$.ajax选项和服务器端页面的响应; 2.寻找特殊字符-没有发现; 3.取出对象末尾的“null”字符串;
我已经了解到可能是从数据库中检索到的零宽度间隔(Unicode-200B),但是我还没有成功解决它。
再次强调-它在Chrome上对99%的输入有效,在IE 8上对100%的输入有效。非常感谢您的帮助。