2011-03-18 32 views
4

我想通過使用GET方法獲取html數據並使用.html()方法添加到div來顯示彈出窗口。下面是我寫的相同的代碼。這在IE和Firefox中運行良好,但在Chrome和Safari中失敗。jquery的.html()方法不在鉻和safari中工作

function openPopupWindow(url, width) { 
     $.ajax({ 
      url: url, 
      type: 'GET', 
      timeout: 180000, 
      success: function(data){ 
      var popUpBody = $("div.popupDivClass").html(data); 
      $(popUpBody).dialog({ 
       autoOpen: false, 
         resizable: false, 
         width:width,     
         modal: true 
        }); 
      //$("div.ui-dialog-titlebar").hide(); 
      $(popUpBody).dialog("open"); 
      } 
     }); 
} 

我收到以下異常:

Uncaught Error: INVALID_STATE_ERR: DOM Exception 11 - jquery-1.4.4.min.js:122

有什麼建議?

+0

什麼是您試圖放入popupbody的HTML? – 2011-03-18 05:04:42

+0

它有html代碼來顯示文本,單選按鈕,下拉和提交按鈕。當我試圖提醒'數據'它顯示整個HTML內容,如<?xml version =「1.0」encoding =「ISO-8859-1」?><!DOCTYPE html PUBLIC「 - // W3C // DTD XHTML 1.0 Strict // EN「」w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">; .. – kkm 2011-03-18 05:11:55

回答

0

這可能是因爲你選擇了$("div.popupDivClass")這可能是多元素。和html(data)不知道要從元素數組返回什麼。嘗試這樣的事情

$("div.popupDivClass").each(function() 
    { 
     $(this).html(data); 
    }) 

或者嘗試通過id

注意選擇:但是不能保證。

+0

仍然沒有運氣。我在父html中定義了popupDivClass div。在數據字段中,我得到了像<?xml version =「1.0」encoding =「ISO-8859-1」?><!DOCTYPE html PUBLIC「 - // W3C // DTD XHTML 1.0 Strict // EN」 「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

我們是否需要定義基於瀏覽器的DOM遍歷類型? – kkm 2011-03-18 05:00:31

+0

@kkm是否可以定義'id'。 – 2011-03-18 05:05:14

+0

你可以在多個選項中設置'.html()'。看到這個jsFiddle:http://jsfiddle.net/9yttC/ – 2011-03-18 05:08:15

0

以下兩行引起了問題。 我刪除了從數據串下面的線和Chrome和Safari其做工精細:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
0

也只是幫助具有Chrome和Safari瀏覽器可能其他問題鄉親。看起來,Chrome瀏覽器非常適合用jquery.html()插入的東西。

我發現以下兩種情況下的Chrome哭聲錯誤:INVALID_STATE_ERR:DOM異常11例外

  • 當插入HTML損壞。喜歡 。 Upss我忘了用/關閉標籤。所以$('body').html("<button value='This is a button'>");會給你例外11.這個解決方案很簡單,只需插入有效的XHTML即可。

  • 在鍍鉻控制檯中試一試$('body').html("C&aacute;psula");&符號是那裏的問題。我的(幾乎)解決方案是將這個符號轉換爲Unicode,如$('body')。html(「\ u0026psula」); \ u0026是&。請注意,&符不是唯一與Chrome對抗的符號。

也許頁面編碼與此有關。

所以你的問題是,回報您的Ajax

5

您需要刪除DOCTYPE任何引用您的數據變量。例如。我有同樣的問題,我刪除了以下行,它的工作就像一個魅力:

<!doctype html public "*"> 
+0

我已刪除<!DOCTYPE html>仍然itsa不在safari中工作...它在其他瀏覽器中工作 – 2016-01-14 07:35:30

相關問題