2011-03-18 62 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