jQuery.post () проблемы с передачей данных в пользовательский интерфейс jQuery - PullRequest
0 голосов
/ 16 апреля 2010

Я пытаюсь заставить jQuery.post() запустить мой php-скрипт, а затем открыть диалоговое окно jQuery UI с данными, которые возвращает php-скрипт. Он должен вернуться как форма со столом и текстовой областью в нем. Он отлично работает с alert(data);, и я получаю всплывающее окно со всеми моими данными.

Проблема начинается, если я выключаю alert(). Теперь открывается 2 диалога. Один, содержащий только таблицу, без текстовой области, а второй абсолютно пустой.

Что я здесь не так делаю? Почему все мои данные отображаются в alert(), но не в диалоге? Что мне нужно сделать, чтобы это исправить?

О, и мне нужно также включить $.ajax() перед $.post()?

Спасибо.

 $.post("/path/to/script.php", 
               { id: this.id, value: value },
               function(data){

                     // THIS WORKS
                     //alert(data);

                     // THIS DOES NOT WORK
                     $(data).dialog({ 
                             autoOpen: true,
                             width: 400,
                             modal: true,
                             position: 'center',
                             resizable: false,
                             draggable: true,
                             title: 'Pending Changes'
                    });
               }



   );

Ответы [ 3 ]

0 голосов
/ 16 апреля 2010

Вот как я справляюсь.У меня есть пустой div и я инициализирую диалог, когда документ готов.Теперь на ajax верните html этого div с данными, полученными из PHP, и вызовите метод диалога open.Просто и определенно работает.

HTH

0 голосов
/ 16 апреля 2010

Ах! Это была не проблема с JS, а мой php-файл.

Текстовая зона находилась снаружи <div>blah blah</div>.

Проблема решена.

0 голосов
/ 16 апреля 2010

Вам не нужен еще один $.ajax() звонок. Метод $.post() представляет собой ярлык для оболочки $.ajax(). Может случиться так, что вы получаете как поведение по умолчанию, так и поведение, связанное с Javascript. Я предполагаю, что это $.post действие сработало при клике. Если это так, то в самом конце вашего $.click() обработчика вам нужно return false, чтобы предотвратить поведение по умолчанию.

$('input[type=submit]').click(function() {
    $.post( /* ... */ );
    return false;
});
...