Используйте jQuery load() для динамической загрузки представления элемента

#jquery #cakephp

#jquery #cakephp

Вопрос:

У меня есть следующий код jQuery:

 $('body').append('<div id="lang-dialog"></div>');

                $('#lang-dialog').load('URL HERE...');

                $('#lang-dialog').dialog({
                    modal: true,
                    draggable: false,
                    resizable: false,
                    autoOpen: false
                });


                $('a#lang').click(function(event)
                {
                    event.preventDefault(); $('#lang-dialog').dialog('open');
                });
  

Это заставляет ссылку загружать диалоговое окно, созданное в DOM, а затем динамически загружать его содержимое, используя представление элемента здесь: app/views/elements/lang-dialog.ctp

Как мне это сделать, используя CakePHP, чтобы выдать элемент в методе load моего кода jquery?

Спасибо

Комментарии:

1. Вам нужно переместить $('#lang-dialog').dialog(...) вызов в success обратный вызов .load() метода. В противном случае вы попытаетесь создать диалоговое окно до загрузки разметки (поскольку .load() оно асинхронное).

2. Не могли бы вы объяснить это на примере кода, пожалуйста? Спасибо

Ответ №1:

Вам нужно переместить $('#lang-dialog').dialog(...) вызов в успешный обратный вызов .load() метода. В противном случае вы попытаетесь создать диалоговое окно до загрузки разметки (поскольку .load() оно асинхронное).

Не могли бы вы объяснить это на примере кода, пожалуйста?

Конечно.

 $('body').append('<div id="lang-dialog"></div>');

var $langDialog = $('#lang-dialog')

$langDialog.load('URL HERE...', function ()
{
    $langDialog.dialog({
        modal: true,
        draggable: false,
        resizable: false,
        autoOpen: false
    });
});

$('#lang').click(function()
{
    $langDialog.dialog('open');
    return false;
});