jquery .html()方法不适用于chrome和safari

时间:2011-03-18 04:37:32

标签: jquery

我试图通过使用GET方法获取html数据并使用.html()方法添加到div来显示弹出窗口。下面是我为此编写的代码。这在IE和Firefox中运行良好,但在Chrome和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" );
          }
      });
}

我收到以下异常:

  

未捕获错误:INVALID_STATE_ERR:DOM异常11 - jquery-1.4.4.min.js:122

有什么建议吗?

4 个答案:

答案 0 :(得分:5)

您需要删除DOCTYPE上的任何引用。例如。我有同样的问题,我删除了以下行,它就像一个魅力:

<!doctype html public "*">

答案 1 :(得分:0)

可能是因为您选择的$("div.popupDivClass")可能是多个元素。并且html(data)不知道从元素数组返回什么。试试这样的事情

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

或尝试按id

选择

注意:但不保证。

答案 2 :(得分: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">

答案 3 :(得分:0)

只是为了帮助其他人解决Chrome浏览器和Safari问题。看起来Chrome对于可以使用jquery.html()插入的内容非常有用。

我发现Chrome有两种情况:错误:INVALID_STATE_ERR:DOM异常11 异常

  • 插入错误的html时。喜欢 。 Upss我忘了用/关闭标签。所以$('body').html("<button value='This is a button'>");将为您提供例外11.解决方案很容易,只需插入有效的XHTML。

  • 在Chrome控制台中尝试此操作$('body').html("C&aacute;psula");符号是那里的问题。我的(几乎)解决方案是将&符号转换为Unicode,如$('body')。html(“\ u0026psula”);是&amp;。请注意,&符号不是唯一与铬对抗的符号。

也许页面编码与此有关。

所以你的问题是你的数据变量返回你的Ajax