jquery ajax调用仅在IE中失败

jquery ajax调用仅在IE中失败,jquery,ajax,Jquery,Ajax,此ajax请求检查某个目录中是否存在TIF文件,并设置一个按钮打开该文件,如果不存在则显示错误消息 $.ajax( { cache: false, url: directory, success: function() { $("#img" + row).click(function() { window.location.href = directory; return false; })

此ajax请求检查某个目录中是否存在TIF文件,并设置一个按钮打开该文件,如果不存在则显示错误消息

        $.ajax(
        {
            cache: false,
            url: directory,
            success: function() { $("#img" + row).click(function() { window.location.href = directory; return false; }) },
            error: function(data) { alert(data.responseText); $("#img" + row).click(function() { $("#ImageDialog").dialog("open"); return false; }) }
        });
有时,但并非总是,IE8会返回失败,即使文件存在,FF和Chrome返回成功。 我添加了“alert(data.responseText)”试图调试这个问题,但是我从来没有得到过这个警报框。IE未能抛出“系统错误:-1072896748”


发生了什么事?

这可能与编码问题有关(您的内容所处的字符集与它承诺的不同)。看。

好吧,我想我找到了发布在这里的原因/解决方案:

上面说

如果IE无法将响应解析为xml,则它似乎会触发失败,即使请求成功,因此,例如,如果您请求图像,它将在错误块中返回xhr.status 200。 我将我的“success”功能放在FF的success块和包装在“if(xhr.status==200)”条件中的error块中


有没有办法确定返回的是什么字符集?如果我只是发出警报(数据),我会得到[object]。我尝试将contentType设置为charset=utf-8,但这并没有阻止它抛出系统错误。但是如果返回的不是UTF-8,那么设置contentType是没有用的。。。问题可能是浏览器将其解释为UTF-8,有或没有contentType集,但字符集实际上是不兼容的(尽管这应该是非常奇怪的…),返回的contentType应该是“image/tiff”。。。如果我说它在Firefox中继续正常工作,但IE由于某种原因失败了。如果我将contentType更改为charset=utf-8,IE和Firefox都会失败。然而,在Firefox中,我得到了一个警告框,其中的图像试图显示为文本。在IE中,我继续收到系统错误失败。请检查您的响应标题。。e、 g.
内容编码:gzip内容类型:text/javascript;charset=UTF-8
我有这个错误,但确实有一个错误,调试中没有行。只有“TypeError对象未初始化或不可见”谢谢IE…这只是我的问题,还是IE需要过度的错误检查?bizzare,但这是真的-我发现firebug lite实际上导致IE8触发状态为200的“错误”,删除了firebug lite(头部的脚本标记),一切正常!!疯狂的家伙,只是有个奇怪的虫子。只有IE在AJAX上失败,尽管JSON编码正确。问题是我在设置内容类型时忘记了一点连字符,它是“utf8”而不是“utf-8”。也许有一天这可以帮助别人。