【问题标题】:jquery ui dialogue not working with AJAX contentjquery ui 对话不适用于 AJAX 内容
【发布时间】:2011-08-31 05:54:55
【问题描述】:

我通过单击链接将 AJAX 内容加载到 jquery UI 对话框中,但它似乎不起作用。问题在于弹出窗口,链接返回 ajax 内容很好。试图实现这个example

$.fx.speeds._default = 1000;
$(document).ready(function(){
        $( "#dialog" ).dialog({
            autoOpen: false,
            show: "blind",
            hide: "explode"
        });

    $('#<url_id>').live('click', function(evt) {
        //evt.preventDefault();
                        $.ajaxSetup({
                            async: false,   
                            "error":function() {   
                                alert("error");
                        }});
                        $.getJSON("<url>", 
                        function(data) {
                            if(data[0][0] != null){
                                var html = '';
                                html += '<div id="dialog" title="Basic dialog">';
//concatenating html
                                html += '</div>';
                            }                       
                        });
            $( "#dialog" ).dialog( "open" );
            return false;
    }); 
});

【问题讨论】:

    标签: ajax jquery-ui jquery-ui-dialog


    【解决方案1】:

    您尚未将具有该 ID 的元素添加到页面中,因此您的选择器不会得到任何结果。你需要做这样的事情:

    var element = $(html);
    $('body').append(element);
    $('#dialog').dialog();
    

    还有: 你真的不应该在每个点击事件上设置 ajax 默认值(这是一个全局设置)。如果您需要指定$.getJSON 不提供的附加参数,您应该直接调用$.ajax。

    【讨论】:

    • 感谢 Tejs,我使用 $.getJSON 的原因是我可以将异步设置为 false,每次点击。我不认为我可以用 $.ajax 做到这一点?
    • 你可以。 $.ajax是所有方法中最通用的,我相信其他方法(如$.getJSON)只是内部调用$.ajax/
    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多