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;
});