2011-01-18 109 views
1

首先我必須道歉,我知道類似於我將要問的問題之前曾被問過,但是這些問題中給出的答案或建議都沒有用於我。IE沒有返回jQuery的結果ajax()調用

赫雷什故事:

我寫了發送AJAX請求,後者又運行PHP腳本執行一個數據庫查詢並返回一個html元素的服務器的功能,特別是它返回:<a href="mypage.php">Click here</a> 。這是我的代碼:

$('#txtHint').hide(); 

    function showReviews(str) { 
     $.ajax({ 
      xhr: function() { 
       if ($.browser.msie) 
       { 
        return new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       else 
       { 
        return new XMLHttpRequest(); 
       } 
      }, 
      url: "dropsearch.php", 
      cache: false, 
      type: "post", 
      data: "q=" + str, 
      dataType: "html", 

    success: function(data) { 
     $('#txtHint').append(data); 
     $('#txtHint').show(); 
     window.alert(data); 
    } 
    }); 
} 

現在,這個工作在普通瀏覽器中完美的罰款,該標籤是在響應頭返回,並追加到txtHint股利。但是,使用Internet Explorer時,響應標頭不會返回任何內容。我甚至用firebug和fiddler來查看頭文件發送和返回的具體內容,由於某些原因,儘管IE發送正確的頭文件並收到了一個頭文件,但它並沒有收到內容。 window.alert()調用只是在IE中顯示一個空的警告框。

我一直在閱讀的IE瀏覽器有緩存問題,當涉及到Ajax調用;然而,確保請求不被阻止不起作用。

有沒有人知道爲什麼會發生這種情況?這一直讓我絕對瘋狂!

任何意見將不勝感激。

Cheers

+0

爲什麼你在調用`$ .ajax`時指定`xhr`屬性?這不應該需要。 `ajax`函數爲你找出正確的請求對象。 – Jacob 2011-01-18 23:04:20

+0

只是一個簡單的問題,爲什麼你將xhr設置爲jQuery的ajax默認值? http://api.jquery.com/jQuery.ajax/可能不是解決方案,但它似乎相當多餘。 – Lance 2011-01-18 23:06:09

回答

4

IE確實緩存了類似的ajax請求。我一直使用的解決方法是添加一個隨機變量,阿賈克斯是需要緩存打開關閉電話:

$('#txtHint').hide(); 

    function showReviews(str) { 
     $.ajax({ 

      url: "dropsearch.php", 
      cache: false, 
      type: "post", 
      data: "q=" + str+"&r="+Math.random(), 
      dataType: "html", 

    success: function(data) { 
     $('#txtHint').append(data); 
     $('#txtHint').show(); 
     window.alert(data); 
    } 
    }); 
} 

此外,像@Jacob說你沒有必要選擇什麼類型的請求$就被使用。

2

答案可能有點晚。但是我自己一直在過去5個小時都遇到同樣的問題。

在我的情況下,問題與空字符被包含在開頭以及HTTP響應主體的各個部分有關。

對我來說,解決方案是在將響應中的空字符發送給客戶端之前去掉它們。

在PHP中,你可以通過(例如)這樣做:

<? 
    $YOUR_RESPONSE = file_get_contents('http://example.com/sloppy_page'); 
    //If you already have your response stored in field, then just use that field 
    echo str_replace("\0", '', $YOUR_RESPONSE); 
?> 

希望我能幫助別人與此!