【发布时间】:2011-01-28 00:02:36
【问题描述】:
我在做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 查询中给出的引用 URL。它包含带有非 ascii 字符的哈希(但是,如果缓存,工作正常)。感谢您的努力。
【问题讨论】:
-
链接问题有更直接的解决方案,推荐,但不能重复。
-
根据定义,如果使用dataType=json,则不是ajax。我将编辑标题
标签: javascript jquery json internet-explorer utf-8