【问题标题】:Can't load AJAX content in jQuery dialog无法在 jQuery 对话框中加载 AJAX 内容
【发布时间】:2014-08-22 14:34:07
【问题描述】:

我从this thread 获得了这个动态创建的 JQueryUI 对话框,它通过 Ajax 从<a href='2.html'> 加载内容。但是我发现以下代码存在问题。即使 AJAX 请求如控制台所示成功发出,内容也无法附加到对话框容器中。谁能找出这一行的加载功能有什么问题:

dialog.load($(this).attr('href') + ' #content').dialog

我试过了

dialog.append($(this).data('source') + ' #content').dialog
dialog.text($(this).data('source') + ' #content').dialog

他们工作。

代码:

var loading = $('<img src="http://upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif" alt="loading" class="loading">');

$(document).ready(function () {

   $(document).ready(function () {
      $('button').click(function () {
       $(this).next('.area').append('<a id="open_dia_'+Date.now().toString()+'"  class="open_dia" title="this title" href="2.html">Click</a>');
   });

    $(document).on('click', '.open_dia', function (evt) {
        var dialogid = 'dialog_'+$(this).attr('id');
        var dialog = null;
        if ($('#'+dialogid.toString()).length == 0)
        {
            dialog = $('<div id="'+dialogid+'"></div>').append(loading.clone());
            dialog.load($(this).attr('href') + ' #content').dialog({
                title: $(this).attr('title'),
                width: 500,
                height: 300
            });
        }
        else
        {
            dialog = $('#'+dialogid.toString());
        }


        dialog.dialog('open');
        return false;

    });
});

【问题讨论】:

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


    【解决方案1】:

    你可以这样做:

    创建一个 div,并在其中创建一个 div,您将使用它来附加内容。

    <div id="dialogDiv" title="this title" style="display:none;">
      <div id='dialogDivDynamic'></div>
    </div>    
    

    在对话框中转换您的第一个 div:

    $("#selectionResult").dialog({
            modal: true,
            width: '900px',
            buttons: [{ text: "Close", click: functionToCloseDialog() }]
    });
    

    将内容附加到您的第二个 div:

    $('#dialogDivDynamic').append("This is my new content");
    
    function functionToCloseDialog() {
      $('#dialogDiv').dialog('close');
    }
    

    【讨论】:

      【解决方案2】:

      你的哈希前面好像有一个空格...试试这个方法:

      dialog.load($(this).attr('href') + '#content').dialog({
        title: $(this).attr('title'),
        width: 500,
        height: 300
      });
      

      【讨论】:

      • 该空间可能是故意的,用于加载特定元素。否则,这是没有意义的,因为 ajax 请求 url 中的哈希不做任何事情
      • @KevinB "2.html #content" 无效,"2.html#content" 无效。
      • 对,但是当您使用 .load 时,2.html #content 会转换为 2.htmlapi.jquery.com/load#loading-page-fragments
      • 如果这解决了问题...您可以一起删除#content。在这种特定情况下删除空格绝对没有意义。
      • 问题已通过删除空白得到解决。
      猜你喜欢
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      相关资源
      最近更新 更多