Форма запроса ajaxSubmit не отправляется - PullRequest
2 голосов
/ 24 марта 2010

Я использую расширение JQuery Form для отправки формы с помощью AJAX. У меня есть следующий код:

var options = { 
    beforeSubmit:  showRequest,  // pre-submit callback 
    success:       showResponse,  // post-submit callback 

    // other available options: 
    //url:       url         // override for form's 'action' attribute 
    //type:      'post',       // 'get' or 'post', override for form's 'method' attribute 
    //dataType:  null        // 'xml', 'script', or 'json' (expected server response type) 
    clearForm: true,        // clear all form fields after successful submit 
    //resetForm: true        // reset the form after successful submit 

    // $.ajax options can be used here too, for example: 
    timeout:   3000 
}; 


$('#composeForm').submit(function() { 
    // inside event callbacks 'this' is the DOM element so we first 
    // wrap it in a jQuery object and then invoke ajaxSubmit
 $(this).find(':disabled').removeAttr('disabled');

    $(this).ajaxSubmit(options); 

    // !!! Important !!! 
    // always return false to prevent standard browser submit and page navigation 
    return false; 
}); 

Проблема в том, что форма не отправляется или, по крайней мере, функция успеха не вызывается. Если я удаляю возврат false, то отправка работает, но страница уходит. Есть ли проблема в моем коде, которая может быть причиной этого?

Cheers, Gazler.

EDIT | Кажется, работает на моем localhost. Может быть это связано с тем, что домен является дополнительным доменом?

Ответы [ 4 ]

3 голосов
/ 24 марта 2010

Вот попробуйте это:

$(document).ready(function(){
      $("#composeForm").submit(function(){
                var str = $(this).serialize(); 
                var formAction = $(this).attr("action");
                $(this).find(':disabled').attr('disabled','');

$.ajax({
         type: "POST",
         url: formAction,
         data: str,
         beforeSubmit:  showRequest,
         success: showResponse
       });

  return false;

  });

 });
2 голосов
/ 24 марта 2010

Я предполагаю, что когда вы удаляете ложь, ваша обычная отправка происходит - она ​​не работает вообще в обоих случаях.

Я думаю, вам нужно иметь правильные значения для большего количества опций. Там есть много комментариев. Кроме того, было бы лучше, если бы вы просто использовали кнопку для отправки, а не для отправки формы, тогда вам не нужно беспокоиться о попытке отключить автоматическую магию, которую выполняет браузер.

1 голос
/ 24 марта 2010

Добавление собственного решения,

Параметр iframe должен был быть:

iframe: true

Это решило проблему.

Спасибо всем за их вклад.

0 голосов
/ 18 сентября 2015

В форме будут некоторые поля, которые проверяются, и это может быть скрыто, поэтому, пожалуйста, проверьте все поля и установите его проверку, он будет работать для меня, его работа, когда я увидел, что есть скрытые поля, которые скрываются из-за jQuery hide шоу. Или вы можете удалить всю проверку из формы, она будет работать.

...