0

我正在使用 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

4 回答 4

1

这个问题很常见。IE 缓存 AJAX 调用。您每次都需要在调用中附加一个随机数或字符串,这样它就不会运行缓存调用。

url: "http://[your url]&rand=" + Math.Random(),
于 2009-12-24T22:03:57.507 回答
0

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

  • 内联 onclick="doSomething();"
  • 内联 href="javascript:doSomething();"
  • 通过 jQuery $('#somelink').bind('click', doSomething);
  • 别的东西?

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

于 2009-09-08T12:22:02.010 回答
0

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

  • $.ajax 在处理 jsonp 时不考虑超时
  • contentType 也不是
  • 错误回调永远不会在 jsonp 请求的上下文中调用
  • 你真的应该使用data参数(代码比它当前显示的自定义 url 构建要干净得多)

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

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

还:

  • 它在IE7中工作吗?
  • 您使用的是什么版本的 jQuery?
于 2009-09-21T04:40:32.633 回答
0

两个想法:

  1. 你的电话在一个 $(document).ready()街区内吗?
  2. 尝试去掉查询字符串开头的 & 符号:

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

于 2009-09-08T11:21:28.770 回答