ie6中$ .ajax失火

时间:2009-09-08 10:56:40

标签: json internet-explorer-6 jquery flickr

我正在使用flickr api根据标签提取的图片创建一个简单的图库。

除了ie6之外,每个浏览器都能正常运行。当您导航到ie6中的页面(通过单击链接)时,$ .ajax成功/错误代码块会拒绝触发,但是当重新加载页面或直接导航(通过输入URL)时,没有问题。

$.ajax({
 type: "GET",
    url: "http://api.flickr.com/services/rest/?&method=flickr.photos.search&api_key=" + api_key + "&user_id=" + user_id + "&tags=" + tags + "&format=json&jsoncallback=?",
    cache: false,
    dataType: "jsonp",
    contentType: "application/json; charset=utf-8",
    success: function(data) {
        alert('good');
    },
    timeout: 2000,
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert(textStatus);
    }
});

上面的代码显然是实际javascript的简化版本,但是bug仍然存在。

非常感谢任何帮助。这似乎是一个非常奇怪的错误。也许这是一个缓存问题?

4 个答案:

答案 0 :(得分:1)

这个问题很复杂。 IE缓存AJAX调用。您需要在每次呼叫时附加一个随机数字或字符串,以便它不会运行缓存的呼叫。

url: "http://[your url]&rand=" + Math.Random(),

答案 1 :(得分:0)

两个想法:

  1. 您的电话是否在 $(document).ready()阻止?
  2. 尝试摆脱&符号 就在查询的开头 字符串:

    / =方法&flickr.photos.search放大器; ...

答案 2 :(得分:0)

“link”如何触发AJAX加载?

  • inline onclick =“doSomething();”
  • inline href =“javascript:doSomething();”
  • 通过jQuery $('#somelink')。bind('click',doSomething);
  • 别的什么?

我问因为IE6 has a known bug,如果您在链接上使用 javascript:协议...然后使用JavaScript加载它请求页面的不同页面但从不呈现它。如果上面的bug扩展到AJAX请求而不仅仅是location.href请求,我想知道(取决于你的AJAX的附加方式)。

答案 3 :(得分:0)

与您的代码有关但与您的问题无关的四件事:

    处理jsonp 时,$ .ajax不会考虑
  • 超时
  • 也不是contentType
  • 在jsonp请求的上下文中从不调用错误回调
  • 您应该使用数据参数(代码会比目前显示的自定义网址更清晰)

第1点和第1点3是由于$ .ajax的实施方式的限制。如果您真的需要这些功能,我建议http://code.google.com/p/jquery-jsonp/

现在,除了karim79指出的内容之外,我认为您的代码没有任何问题。所以我猜你在 $(document).ready()的函数中有之前的其他错误。在 javascript 语法方面, IE 远不如其他浏览器宽松。尝试尽早调用 $。ajax

此外:

  • 在IE7中有效吗?
  • 您使用的是哪个版本的jQuery?