如何在模态对话框中给出Ajax调用

时间:2009-11-30 06:16:03

标签: jquery jquery-ui modal-dialog lightbox

我正在使用jQuery UI中的模态对话框。我想进行Ajax调用以在对话框中显示内容。

$(function(){
    $('#myLink').live("click", function(){
        $('#lbContent').dialog('open');
        var url= $(this).attr("href");
        $('div#lbContent').empty();
        $('div#lbContent').load(url);
        return false;
    });

    $('#lbContent').dialog({
        stack:true,
        bgiframe: true,
        autoOpen: false,
        height:500,
        width:700,
        modal: true,
        resizable:true
    });
});

现在,当我点击链接时,它会按预期在模态对话框中显示内容。

但是当我关闭该对话框并再次点击同一链接时,该对话框无法打开。我试图在两者之间发出警报。

当我刷新页面并单击链接时,它会按预期工作。

3 个答案:

答案 0 :(得分:1)

感谢Peter编辑我的初步评论。然而,经过对此的进一步调查,我发现Shruti的问题是动态内容的真正问题。我甚至可以复制抖动的链接。

问题是动态内容也使用jQuery文件。如果我使用转到服务器的URL并使用Cold Fusion页面从数据库请求数据,我得到与Shruti相同的结果,它第一次工作但不是后续访问。如果我使用一个在对话框中显示图像的简单HTML页面,它将一直有效。

我从动态内容页面中删除了jQuery函数,并且每次都有效。所以jQuery存在问题,如果它也被用在正在加载的url中。

++++++++++++++++++++++++++++++++++++++++++++++ < / p>

好几分钟后摆弄这个....

如果动态页面使用主页面使用的相同jQuery文件,则不要在动态脚本中加载这些文件。也就是说,主页面是唯一应加载jQuery文件的页面而不是您尝试加载到主页面上的元素中的动态页面&#34;。回到这一点是,独立环境中的动态页面不起作用,因为你没有调用jQuery UI。

这有点奇怪,因为我可以显示和隐藏带有动态内容的标准div标签,而无需修改任何内容。但是当我想在jQuery中使用对话框函数时,一切都会中断。嗯!仍然是一个非常有价值的JavaScript例程库 - 只需稍微调整一下。那个软件。

答案 1 :(得分:0)

无法重现您的问题。考虑添加一个由javascript + html代码组成的精简样本,可以一致地重现问题。

还要添加您使用的浏览器。如果您的错误控制台中显示任何错误,该怎么办?

根据您的代码检查http://jsbin.com/opigo是否有工作样本。

http://jsbin.com/opigo/edit检查代码

答案 2 :(得分:0)

对于那些仍在使用IE 7.0的系统开发的人来说,这只是一个词。

$('#lbContent').dialog({
    stack:true,
    bgiframe: true,
    autoOpen: false,
    height:500,
    width:700,
    modal: true,
    resizable:true,

对话框参数列表中的最后一个逗号将导致代码无法用于IE 7.0。