簡體   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