jQuery.post() проблемы с передачей данных в пользовательский интерфейс jQuery

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

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

Что я здесь не так делаю? Почему все мои данные отображаются в 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 ответа

Решение

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

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

Задача решена.

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

НТН

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

$('input[type=submit]').click(function() {
    $.post( /* ... */ );
    return false;
});
Другие вопросы по тегам