[РЕШЕНО] "HTTP запрос AJAX завершен неправильно" при нажатии на submit

Главные вкладки

Аватар пользователя Kaer Kaer 17 августа 2013 в 19:49

Здравствуйте.

Делаю форму с несколькими textfield, значения некоторых суммируются с значениями других textfield, суммирую через #ajax. Все нормально и удобно кроме косяка с ошибкой ajax запроса, который возникает если после изменения textfield сразу кликнуть на submit, выскакивает alert - "HTTP запрос AJAX завершен неправильно"

Каким образом можно избавиться от этой проблемы?

Обновлено 20.08.2013 РЕШЕНИЕ

Добавил js файл со следующим содержимым

jQuery(function(){
    jQuery("form")
    .ajaxStart(function (e) {
        jQuery(e.target).find("input[type='submit']").attr("disabled", "disabled");
    })
    .ajaxComplete(function(e){
        jQuery(e.target).find("input[type='submit']").removeAttr("disabled");
    });
});

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 18 августа 2013 в 20:20

Надо js приписывать в котором .ajax свой прописать, отслеживать click, устанавливать disabled на .form-sumbit, а когда ajax ответ получил ( .done или .fail ) убирать с .form-sumbit аттрибут disabled

Аватар пользователя Kaer Kaer 19 августа 2013 в 11:26

5 копеек никогда не бывают лишними.

"kosHta" wrote:
Такая ошибка бывает при излишней спешке

не, тут немного другое, ошибка возникает потому что срабатывает ajax запрос при событии change текстового поля, которое возникает во время клика на submit. Но submit отправляет форму потому и запрос вылетает с ошибкой. Если например кликнуть не на submit формы а на другой элемент или просто на пустое место то ошибки нет, так как запрос корректно уходит и приходит ответ.
"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Надо js приписывать в котором .ajax свой прописать, отслеживать click, устанавливать disabled на .form-sumbit, а когда ajax ответ получил ( .done или .fail ) убирать с .form-sumbit аттрибут disabled

спасибо помозгую

в API в Ajax есть свойство prevent которое вроде как для таких случаев, но как то я не особо понял как им пользоваться.