Javascript 使用xhr时,JQuery对话框关闭不起作用

Javascript 使用xhr时,JQuery对话框关闭不起作用,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试使用XHRAJAX制作一个网页 我通过xhr.responseText收到了Jquery对话框 A.jsp(实际查看页面的获取数据部分) 当我单击某个按钮时,会调用getOrderData(),当接收到所有数据时,还会调用viewdialog()方法。所以,对话框显示在网页中 POS\u orderAjaxGet.jsp <script> function viewdialog() { $( "

我正在尝试使用XHRAJAX制作一个网页

我通过xhr.responseText收到了Jquery对话框

A.jsp(实际查看页面的获取数据部分)

当我单击某个按钮时,会调用getOrderData(),当接收到所有数据时,还会调用viewdialog()方法。所以,对话框显示在网页中

POS\u orderAjaxGet.jsp

   <script>
           function viewdialog() {
                          $( "#dialog" ).dialog({
                            closeOnEscape: false,

                            autoOpen: true,
                            resizable: false,
                            draggable: true,
                            move:false,
                            height:830,
                            width:1085,
                            modal: true,
                            position:[0,0]
                          });
                        }
          function closeMenu() {
                        alert("close event");  // this is well displayed
                        $( "#dialog" ).dialog("close");
                    }
    </script>

<body>
    <div id="dialog" title="order">
         <input id="ocancel"type="button" class="btn" value="close"       
          onclick="closeMenu();"> 
    </div>
</body>

函数viewdialog(){
$(“#对话框”)。对话框({
closeOnEscape:错误,
自动打开:对,
可调整大小:false,
真的,
动议:错,
身高:830,
宽度:1085,
莫代尔:是的,
位置:[0,0]
});
}
函数关闭菜单(){
警报(“关闭事件”);//显示良好
$(“对话框”)。对话框(“关闭”);
}
一切都很好。但是$(“#dialog”).dialog(“close”)不起作用。所以我将closeMenu()函数移到了A.jsp。也不工作。。。 纯POS_orderAjaGet的closeMenu()非常好用。 我认为A.jsp找不到id“dialog”

让我知道有什么问题

function closeMenu() {
    document.getElementById("dialog").parentNode.remove();
}

这是同样的工作。但我认为这不是一个好的解决方案。

我肯定会将包含
viewdialog
closeMenu
的脚本标记保留在A.jsp中,而不是保留在返回的对话框内容中。AJAX的好处之一是使页面性能更高;减少通过网络发送的内容量。也就是说,您的代码结构在我看来是正确的。只要jQuery被正确地加载到页面中,并且您没有将内容加载到iFrame或其他选项卡中,就好像发生了其他事情。如果你有一个在小提琴或jsbin中的复制案例,你应该发布它。当我通过chrome开发者控制台检查页面时,我做到了。但我不太明白。无论如何,dialog div有父div。所以,我使用document.getElementById(“dialog”).parentNode.remove();它的工作原理类似于$(“dialog”).dialog(“close”)。
function closeMenu() {
    document.getElementById("dialog").parentNode.remove();
}