繁体   English   中英

$ .ajax在ie6中失火

[英]$.ajax misfire in ie6

我正在使用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的简化版本,但该错误仍然存​​在。

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

这个问题经常发生。 IE缓存AJAX调用。 您每次都需要在呼叫中附加一个随机数或字符串,这样它才不会运行缓存的呼叫。

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

两个想法:

  1. 您的呼叫是否在$(document).ready()块内?
  2. 尝试在查询字符串的开头删除“&”号:

    /?method=flickr.photos.search&...

“链接”如何触发AJAX加载?

  • 内联onclick =“ doSomething();”
  • 内联href =“ javascript:doSomething();”
  • 通过jQuery $('#somelink')。bind('click',doSomething);
  • 还有什么吗

我问是因为IE6有一个已知的错误 ,即如果您拥有/使用链接上的javascript:协议...然后使用JavaScript加载其他页面,它将请求该页面,但永远不会呈现它。 我想知道是否(取决于您的AJAX的附加方式)上述错误是否扩展到了AJAX请求而不仅仅是location.href请求。

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

  • 处理jsonp时,$。ajax不考虑超时
  • 内容类型也不是
  • 错误回调永远不会在jsonp请求的上下文中调用
  • 您应该真正使用data参数(该代码比其当前显示的自定义网址构建要干净得多)

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

现在,除了karim79指出的内容外,我发现您的代码没有错。 所以我的猜测是,在您提供给$(document).ready()的函数中,您之前还有其他问题。 javascript语法方面, IE远没有其他浏览器宽容。 尝试尽早发出$ .ajax呼叫。

也:

  • 可以在IE7中使用吗?
  • 您正在使用哪个版本的jQuery?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM