2009-10-02 102 views
1

我試圖從我正在工作的網站的另一個頁面中提取Div的內容並更新當前頁面上的Div。我想這樣做,所以我不需要重新加載頁面。我正在使用的Ajax調用在Firefox中正常工作,它使用來自網站其他頁面的內容更新Div。問題是它在IE中打破了,當我嘗試從使用.html()返回的數據獲取HTML時,我在IE中得到了空值。如果我只是在返回的數據上發出警報,則會顯示html。jQuery Ajax從該網站的另一個頁面加載內容

var divItems = $("#tab-bbp a").attr("href"); 
$.ajax({ 
    type: "GET", 
    url: divItems, 
    dataType: "html", 
    success: function(msg){ 
     $("#persistenslcont").html($("#persistenslcont",msg).html()); 
     //null in IE, returns HTML in FF 
     alert($("#persistenslcont",msg).html()); 
    }, 
    error: function() { 
     alert("error"); 
}     
}); 

這似乎很奇怪,這在IE中不起作用。另外,我不確定這是不是我想要完成的最好的技術。任何幫助,將不勝感激。下面

編輯

當我嘗試了.load功能我還是遇到了問題與IE瀏覽器是註釋掉的代碼。我有很多提醒嘗試找出問題所在。看起來#2應該可以工作,但在IE中返回null。

是否可以操作[object Object]或查看它包含的內容?

var divItems = $("#tab-bbp a").attr("href"); 
$("#persistenslcont").load(slItems + " #persistenslcont", 
            function (data, textStatus, req) { 
             //returns HTML code in the alert in IE & FF 
             alert("test 1" + req.responseText); 

             //returns null in IE - In FF returns proper code 
             alert("test 2" + $("#persistenslcont",req.responseText).html()); 

             //returns [object Object] same in IE & FF 
             alert("test 3" + $("#persistenslcont",data)); 

             //returns [object Object] same in IE & FF 
             var $response = $('<div />').html(data); 
             var $test4 = $response.find('#persistenslcont'); 
             $('#persistenslcont').append($test4); 
             alert("test 4" + $test4); 

             if (textStatus == "error") { 
              alert("error"); 
             } 
            }); 
+0

您使用的是哪種版本的IE?您是否使用過任何開發工具(例如Firebug for FF)來檢查特定錯誤? – 2009-10-02 01:01:45

+0

我使用Firebug,但Firefox中沒有錯誤,並且在IE中打開的JS錯誤通知也沒有顯示。它在FF中工作,而不是在IE中。 $(「#persistenslcont」,msg).html()返回null,即使您查看msg(返回的數據),您將獲得HTML代碼輸出。 – Westing 2009-10-02 01:33:27

回答

0

我在IE中的Ajax調用的問題與開放的<div>有關。不知何故,我起初沒有檢查我的HTML結構。這只是HTML驗證重要的另一個原因!

0

我覺得你可以做成功的功能更簡單的是這樣的:

success: function(msg){ 
    $("#persistenslcont").html(msg); 

    alert($("#persistenslcont").html(msg)); 

}

0

您可以指定你的jQuery想要什麼請求頁面的一部分。我會用load()功能:

 $("#persistenslcont").load($(divItems + " #divcontent"); 

我想我搞砸你的代碼,但其基本思想是正確的,應該在IE瀏覽器。基本上只需將ajax查詢指向所需頁面的一部分,而不是處理所請求的整個頁面的HTML內容。

+0

在FF中工作,但唉,它仍然在IE中被破壞。看到我上面的編輯。 – Westing 2009-10-05 21:05:25