我在做ajax查询
$.ajax({
url: (some url),
dataType: "json",
error: function(xhr, textStatus, errorThrown) {
(error handler)
},
data : requestData,
success: function(data) {
(success handler)
}
});
完美适用于Opera / Firefox / Webkit浏览器。但是当使用IE并使requsestData包含一些带有非ascii字符的字符串(例如ł)时,会返回错误并且xhr状态为12031.请注意,即使将url替换为某些现有文档也不会给出404状态(但是在Opera等中也是如此) ),所以我认为查询根本没有执行。
关于提到的副本:遗憾的是它没有帮助我。尝试了没有结果的encodeURIComponent(难怪,当对象传递给requestData时,导致jquery自动执行此操作)。甚至硬编码查询(以字符串形式传递)但它也不起作用。
更新: 如果在IE中缓存,则查询将与非ascii数据一起使用。这意味着我可以复制准备好的XHR URL,将其粘贴到另一个IE选项卡中,然后使用ajax刷新原始页面并且不会收到任何错误。
再次更新: 固定。未正确编码的是ajax查询中给出的referer url。它包含带有非ascii字符的哈希(但是如果缓存,则工作正常)。谢谢你的努力。
答案 0 :(得分:1)
请记住,您的Ajax调用必须符合UTF8,因为您没有指定charset,那么它是默认值。
UTF8中不接受该字符,您必须自己编码。没错,有些浏览器可能会为你做,但基本上你需要在IE中自己做。