0

私はflickrapiを使用して、タグによって引き込まれた画像に基づいてシンプルなギャラリーを作成しています。

ギャラリーは、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の簡略化されたバージョンですが、バグはまだ存在しています。

どんな助けでも大歓迎です。これは非常に奇妙なバグのようです。おそらくそれはキャッシュの問題ですか?

4

4 に答える 4

1

この問題はかなり再発します。IEはAJAX呼び出しをキャッシュします。キャッシュされた呼び出しが実行されないように、呼び出しには毎回乱数または文字列を追加する必要があります。

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

2つの考え:

  1. あなたの電話は $(document).ready()ブロック内にありますか?
  2. クエリ文字列の先頭でアンパサンドを削除してみてください。

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

于 2009-09-08T11:21:28.770 に答える
0

「リンク」はどのようにAJAXロードをトリガーしますか?

  • インラインonclick="doSomething();"
  • インラインhref="javascript:doSomething();"
  • jQuery経由$('#somelink')。bind('click'、doSomething);
  • 他に何かありますか?

IE6には既知のバグがあるため、リンクでjavascript:プロトコルを使用している場合は、JavaScriptを使用して別のページをロードすると、ページが要求されますが、レンダリングされません。上記のバグがlocation.hrefリクエストだけでなくAJAXリクエストにも及ぶのではないかと思います(AJAXのアタッチ方法によって異なります)。

于 2009-09-08T12:22:02.010 に答える
0

あなたのコードに関連しているがあなたの質問には関連していない4つのこと:

  • jsonpを処理するとき、タイムアウトは$.ajaxによって考慮されません
  • また、contentTypeはありません
  • エラーコールバックがjsonpリクエストのコンテキストで呼び出されることはありません
  • 実際にはデータパラメータを使用する必要があります(コードは、現在表示されているカスタムURLビルドよりもはるかにクリーンになります)

ポイント1と3は、$。ajaxの実装方法の制限によるものです。これらの機能が本当に必要な場合は、http://code.google.com/p/jquery-jsonp/をお勧めします。

さて、karim79が指摘したことを除けば、あなたのコードには何の問題もありません。したがって、 $(document).ready()にフィードする関数で、そのに何か問題が発生していると思います。IEは、 JavaScript構文に関して、他のブラウザーよりもはるかに寛容ではありません。できるだけ早く$.ajax呼び出しを行ってみてください。

また:

  • IE7で動作しますか?
  • どのバージョンのjQueryを使用していますか?
于 2009-09-21T04:40:32.633 に答える