异步json javascript查询仅在IE上使用unicode字符失败

时间:2011-01-28 00:02:37

标签: javascript jquery json internet-explorer utf-8

我在做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字符的哈希(但是如果缓存,则工作正常)。谢谢你的努力。

1 个答案:

答案 0 :(得分:1)

请记住,您的Ajax调用必须符合UTF8,因为您没有指定charset,那么它是默认值。

UTF8中不接受该字符,您必须自己编码。没错,有些浏览器可能会为你做,但基本上你需要在IE中自己做。