日期:2014-05-18  浏览次数:20841 次

jquery ui dialog 里调用ajax 之后dialog出错(两贴同结)
问题发在 javascript区一天了,一个回帖也没有,太冷清了,还是发回这里看看吧,如果有答案了,两贴一起结分
http://topic.csdn.net/u/20120820/19/14f894a4-2b28-4cb0-9349-ac3be6b0a121.html?seed=1941367641&r=79460326


jquery ui 的 dialog,里面如果不用 $.get $.ajax 之类的东西就一切正常,只要用了AJAX, 甚至是.load 之后 dialog就不正常了,不能用外部的按钮关闭,测试.dialog("isOpen")也是返回object.

代码如下:
function showSupplierCategory() {
  alert($("#supplierCate").dialog("isOpen"));
  if ($("#supplierCate").dialog("isOpen") !== true) {
  $("#supplierCate").dialog();  
  $("#supplierCate").html("<p>Loading...</p>");
  $("#supplierCate").load('/supplier/index')
   
  }  
  }
  function closeSupplierCategory() {
   
  $("#supplierCate").dialog("close");
   
  }

<button onclick="return showSupplierCategory()" >open</button>  
<button onclick="closeSupplierCategory()" >close</button>
<div id="supplierCate"></div>

经反复测试,只要没有这句:$("#supplierCate").load('/supplier/index')
或者是:$.get('/supplier/index', function (rs) {

  $("#supplierCate").html(rs);

  });
就一切正常,在对话框打开的时候alert($("#supplierCate").dialog("isOpen"));是返回的true,也可以用<button onclick="closeSupplierCategory()" >close</button>关闭,如果经过AJAX调用,就不行了,只能用对话框内的小叉关闭,
对话框明明是打开的,$("#supplierCate").dialog("isOpen")却返回[Object Object].
测试了一天不得要领,帮忙看下!谢谢!

------解决方案--------------------
如下操作是没有问题的
JScript code
function showSupplierCategory() {
            $.ajax({
                type: "Get",
                async: false,
                url: "a.aspx",
                data: null,
                success: function (data) {
                    $("#supplierCate").html(data);
                }
            });
        $("#supplierCate").dialog();
        
}

------解决方案--------------------
$("#supplierCate").load('/supplier/index') 或
$.get('/supplier/index',

你返回的HTML标签 是带HEAD的了 要记住页面要无缝拼接
如果你AJAX返回的是不是 一样的拼接 尤其是$("#supplierCate").load('/supplier/index')
会把页面的所有的HTML加载过来的