【问题标题】:jQuery: Load Modal Dialog Contents via AjaxjQuery:通过 Ajax 加载模态对话框内容
【发布时间】:2011-04-19 17:25:54
【问题描述】:

目前我的模态对话框是这样的

<html>
 <head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/humanity/jquery-ui.css" type="text/css" />
 </head>
 <body>
  <div id="dialog" title="Title Box">
   <p>Stuff here</p>
  </div>
  <script type="text/javascript">
   jQuery(
    function() {
     jQuery("#dialog")
      .dialog(
       {
        bgiframe: true,
        autoOpen: false,
        height: 100,
        modal: true
       }
      );
     jQuery('body')
      .bind(
       'click',
       function(e){
        if(
         jQuery('#dialog').dialog('isOpen')
         && !jQuery(e.target).is('.ui-dialog, a')
         && !jQuery(e.target).closest('.ui-dialog').length
        ){
         jQuery('#dialog').dialog('close');
        }
       }
      );
    }
   );
  </script>
  <a href="#" onclick="jQuery('#dialog').dialog('open'); return false">Click to view</a>
 </body>
</html>

加载的 Div 包含在同一页面中。显示对话框时,如何将该 div 移动到第二页并通过 Ajax 加载内容?我可以根据需要重复使用脚本来加载不同的内容吗?

【问题讨论】:

    标签: jquery ajax dialog modal-dialog


    【解决方案1】:

    查看 Nemikor 的这篇博文,它应该可以满足您的需求。

    http://blog.nemikor.com/2009/04/18/loading-a-page-into-a-dialog/

    基本上,在调用“打开”之前,您首先从另一个页面“加载”内容。

    jQuery('#dialog').load('path to my page').dialog('open'); 
    

    【讨论】:

    • 虽然这可行,但它会立即打开对话框,而不是等待加载完成。最好使用回调函数,例如:$('#dialog').load('path-to-my-page', function() { $('#dialog').dialog('open'); });
    【解决方案2】:

    尝试使用这个。

    $(document).ready(function(){
    $.ajax({
        url: "yourPageWhereToLoadData.php",
        success: function(data){
            $("#dialog").html(data);
        }   
    });
    
    $("#dialog").dialog(
           {
            bgiframe: true,
            autoOpen: false,
            height: 100,
            modal: true
           }
    );
    });
    

    【讨论】:

      【解决方案3】:
      $(function ()    {
          $('<div>').dialog({
              modal: true,
              open: function ()
              {
                  $(this).load('Sample.htm');
              },         
              height: 400,
              width: 400,
              title: 'Dynamically Loaded Page'
          });
      });
      

      http://www.devcurry.com/2010/06/load-page-dynamically-inside-jquery-ui.html

      【讨论】:

        【解决方案4】:
        var dialogName = '#dialog_XYZ';
        $.ajax({
                url: "/ajax_pages/my_page.ext",
                data: {....},
                success: function(data) {
                  $(dialogName ).remove();
        
                  $('BODY').append(data);
        
                  $(dialogName )
                    .dialog(options.dialogOptions);
                }
        });
        

        Ajax-Request 加载 Dialog,将它们添加到当前页面的 Body 并打开 Dialog。

        如果你只想加载你可以做的内容:

        var dialogName = '#dialog_XYZ';
        $.ajax({
                    url: "/ajax_pages/my_page.ext",
                    data: {....},
                    success: function(data) {
                      $(dialogName).append(data);
        
                      $(dialogName )
                        .dialog(options.dialogOptions);
                    }
        });
        

        【讨论】:

          【解决方案5】:
          <button class="btn" onClick="openDialog('New Type','Sample.html')">Middle</button>
          
          <script type="text/javascript">
              function openDialog(title,url) {
                  $('.opened-dialogs').dialog("close");
          
                  $('<div class="opened-dialogs">').html('loading...').dialog({
                      position:  ['center',20],
                      open: function () {
                          $(this).load(url);
          
                      },
                      close: function(event, ui) {
                              $(this).remove();
                      },
          
                      title: title,
                      minWidth: 600            
                  });
          
                  return false;
              }
          </script>
          

          【讨论】:

            【解决方案6】:

            也许这段代码会给你一些想法。

            http://blog.nemikor.com/2009/04/18/loading-a-page-into-a-dialog/

            $(document).ready(function() {
                $('#page-help').each(function() {
                    var $link = $(this);
                    var $dialog = $('<div></div>')
                        .load($link.attr('href'))
                        .dialog({
                            autoOpen: false,
                            title: $link.attr('title'),
                            width: 500,
                            height: 300
                        });
            
                    $link.click(function() {
                        $dialog.dialog('open');
            
                        return false;
                    });
                });
            });
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-04-07
              • 1970-01-01
              相关资源
              最近更新 更多