Как проверить тип запроса (ajax или нет) в событии onsubmit?

В моих формах приложений иногда отправляется напрямую, а иногда с помощью .ajaxForm() из плагина jquery. Я хочу знать, как форма была отправлена. Могу ли я узнать об этом внутри события onsubmit?

$(document).on('submit', 'form', function(e) {
   if (e.method_to_check_is request_was_ajax)  
   // rest of code here
 });

После нескольких комментариев я должен отредактировать вопрос.


person Piotr Galas    schedule 19.02.2016    source источник
comment
Как это будет Ajax с onsubmit? Ajax — это объект XMLHttpRequest, он не будет инициировать отправку формы.   -  person epascarello    schedule 19.02.2016
comment
Я не понимаю вашего вопроса, вы должны знать, какой запрос вы делаете, верно? Если форма была отправлена ​​из jQuery (например), вы должны знать, откуда это было сделано.   -  person rmpt    schedule 19.02.2016
comment
stackoverflow.com/questions/10783463/   -  person Niklesh Raut    schedule 19.02.2016
comment
gmarwaha .com/блог/2009/06/27/   -  person Niklesh Raut    schedule 19.02.2016
comment
@epascarello Я думал, что XMLHttpRequest сработает при событии («отправить»). я проверю   -  person Piotr Galas    schedule 19.02.2016
comment
@rmpt в приложении много форм отправки. И ajax и не ajax. Ко всему этому мне нужно добавить некоторую логику, но мне нужно знать, что такое ajax, а что нет.   -  person Piotr Galas    schedule 19.02.2016
comment
В браузере вызов Ajax не запускает обработчик отправки.   -  person epascarello    schedule 19.02.2016
comment
@epascarello, вы правы, вызов Ajax не запускает отправку. Я ошибся, потому что мое приложение иногда использует ajaxForm() для отправки ajax из формы. Поэтому я подумал, что ajax запускает это событие.   -  person Piotr Galas    schedule 19.02.2016


Ответы (2)


Согласно вашему описанию, это не будет запрос ajax, потому что вы используете on('submit', function(){});, который вызывается при отправке html-формы, и это будет html-запрос на сервер.

Если вы все еще хотите проверить тип запроса GET или POST, вы можете проверить атрибут method формы.

$(document).on('submit', 'form', function(e) {
   e.preventDefault();
   var method = this.method;
   if(method=='GET')
   //do something
   if(method=='POST')
   //do something
 });
person tahir waseer    schedule 19.02.2016

На данный момент ваше событие привязано к вашему событию отправки, а не к вызову ajax.

Однако, если вы хотите реализовать проверку, чтобы увидеть, что должна делать эта отправка, вы можете:

Имейте это в своей разметке:

<form id="my-id" class="my-forms" method="GET">
 <button type="submit"></button>
</form>

И это в вашем js:

$('#my-id').on('submit', function(e) {
   e.preventDefault();
   var method = this.method;

   if (method === 'GET') {
   console.log(method);
   // do your ajax.get
   }

   if (method === 'POST') {
   console.log(method);
   // do your ajax.post
} 
});

Конечно, этот пример надуман, так как this.method на $('#my-id') всегда будет 'GET'. Однако вместо этого вы можете изменить свой селектор на $('.my-forms'), чтобы перехватить это событие среди всех элементов с классом .my-forms.

person kuzyn    schedule 19.02.2016
comment
Да я это знаю но это не совсем то спрашиваю, но спасибо за пояснение - person Piotr Galas; 19.02.2016