字符串在jquery-ui对话框中包含无效字符

时间:2011-06-21 08:26:24

标签: javascript jquery jquery-ui

在与jquery-ui进行对话时,永远不会发生在我身上。我有一个div,当我使用.dialog进行对话时,我收到此错误

[Exception... "String contains an invalid character" code: "5" nsresult: "0x80530005 (NS_ERROR_DOM_INVALID_CHARACTER_ERR)" location: "http://localhost/include/jquery-1.5.1.min.js Line: 16"] { constructor=DOMException, code=5, more...}

我有jquery 1.5.1,UI 1.8.13自定义,里面有所有插件。 这是文档就绪

中对话框的代码
    $("#dialog").dialog({
    bgiframe: true,
    height: 200,
    width: 150,
    modal: false,
    show: 'blind',
    hide: 'blind',
    resizable: false,
    position: [270,150],
    autoOpen: false,
    zIndex: 997,
    buttons: {
        "Reset": function() {
        }
    }
});

这就是div

<div id="dialog">some text</div>

1 个答案:

答案 0 :(得分:1)

我遇到完全相同的问题唯一不同的是,在我的代码中,整个选项来自使用$ .getJson的JSON编码服务器响应:

$.getJSON(
    '/get-dialog',
    function(r){
        $('<div>' + r.content + '</div>').dialog(r.options);
    }
);

目前,我在r.options对象中添加了一个名为按钮的键,出现了完全相同的错误。

所以响应(r)基本上是这样的:

content
    "<form action="/editor">...</form>"
options
    resizable false
    width 600   
    modal true
    buttons
        Ok "function(){alert('test')}"

从r.options中删除按钮会使错误消息消失。我为按钮尝试了几种不同的键/值,但这些都不重要。

使用jQuery UI版本1.8.16和jQuery版本1.6.2。

在进一步阅读之后,我发现我们都犯了同样的错误。如果你看一下jQuery UI Dialog文档,它给出了以下例子:

$( ".selector" ).dialog({ buttons: [
    {
        text: "Ok",
        click: function() { $(this).dialog("close"); }
    }
] });

(资料来源:http://jqueryui.com/demos/dialog/

因此,您不应该使用键/值对,而是包含键文本和单击的子数组。

因为我们两个都做错了(并且我发现其他人遇到了同样的问题)我猜测这已经在jQuery UI中的某些版本上进行了更改。我不确定它什么时候改变了。

所以在你的情况下,正确的代码是:

$("#dialog").dialog({
    bgiframe: true,
    height: 200,
    width: 150,
    modal: false,
    show: 'blind',
    hide: 'blind',
    resizable: false,
    position: [270,150],
    autoOpen: false,
    zIndex: 997,
    buttons: [
    {
        text: "Reset",
        click: function() {  }
    }
    ]
});