我正在使用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仍然存在。
非常感谢任何帮助。这似乎是一个非常奇怪的错误。也许这是一个缓存问题?
答案 0 :(得分:1)
这个问题很复杂。 IE缓存AJAX调用。您需要在每次呼叫时附加一个随机数字或字符串,以便它不会运行缓存的呼叫。
url: "http://[your url]&rand=" + Math.Random(),
答案 1 :(得分:0)
两个想法:
$(document).ready()
阻止?尝试摆脱&符号 就在查询的开头 字符串:
/ =方法&flickr.photos.search放大器; ...
答案 2 :(得分:0)
“link”如何触发AJAX加载?
我问因为IE6 has a known bug,如果您在链接上使用 javascript:协议...然后使用JavaScript加载它请求页面的不同页面但从不呈现它。如果上面的bug扩展到AJAX请求而不仅仅是location.href请求,我想知道(取决于你的AJAX的附加方式)。
答案 3 :(得分:0)
与您的代码有关但与您的问题无关的四件事:
第1点和第1点3是由于$ .ajax的实施方式的限制。如果您真的需要这些功能,我建议http://code.google.com/p/jquery-jsonp/。
现在,除了karim79指出的内容之外,我认为您的代码没有任何问题。所以我猜你在 $(document).ready()的函数中有之前的其他错误。在 javascript 语法方面, IE 远不如其他浏览器宽松。尝试尽早调用 $。ajax 。
此外: