[英]$.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(),
两个想法:
$(document).ready()
块内? 尝试在查询字符串的开头删除“&”号:
/?method=flickr.photos.search&...
“链接”如何触发AJAX加载?
我问是因为IE6有一个已知的错误 ,即如果您拥有/使用链接上的javascript:协议...然后使用JavaScript加载其他页面,它将请求该页面,但永远不会呈现它。 我想知道是否(取决于您的AJAX的附加方式)上述错误是否扩展到了AJAX请求而不仅仅是location.href请求。
与您的代码相关但与您的问题无关的四件事:
第1点和第3点是由于$ .ajax实施方式的限制。 如果您确实需要这些功能,我建议http://code.google.com/p/jquery-jsonp/ 。
现在,除了karim79指出的内容外,我发现您的代码没有错。 所以我的猜测是,在您提供给$(document).ready()的函数中,您之前还有其他问题。 在javascript语法方面, IE远没有其他浏览器宽容。 尝试尽早发出$ .ajax呼叫。
也:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.