Сделал в своем модуле форму и функцию сабмита для нее. По всем правилам Drupal. В page.tpl.php добавил код, чтобы заменить стандартных сабмит на ajaxSubmit без перезагрузки страницы.
$('#my-form').unbind('submit');
$('#my-form').submit(function(arg) {
$(this).ajaxSubmit({
type: 'POST',
beforeSubmit: function() { },
dataType : 'json',
error: function (XMLHttpRequest, textStatus, errorThrown) {
window.alert(textStatus);
if (window.console) {
console.log('error', arguments);
}
return true;
},
success: function(data){
alert(data);
return true;
}
});
return false;
});
});
Серверная функция сабмита возвращает некие данные, которые по идее должны вернуться в ветку success.
Сам сабмит работает правильно. Данные формы отправляются на сервер и нормально обрабатываются. Вот только в приведенном выше коде все время приходит error, т.е. с сервера ничего не возвращается.
Если убрать атрибут dataType, то success приходит, но вот в параметре data находится весь код всей страницы, на которой лежит форма.
Что не так я делаю?
Как правильно отправить и данные на сервер и получить оттуда обработанные данные? Главная идея - сделать виззард. Сабмитим одну форму, в зависимости от введенных данных грузим другую форму и так далее.
Комментарии
делайте через ahah, чтобы уж совсем по правилам друпала
В ahah, насколько я понял, несколько заморочено нужно обрабатывать сабмит формы.
Тут поковырялся чуть-чуть и выяснил, что мне всегда с сервера приходит код всей страницы. Ошибка же вылетает при попытке распарсить json или xml.
Вот почему с сервера приходит такое безобразие, а не то что я возвращаю в submit процедуре?