2015-07-13 4 views
-1

Я знаю, что этот вопрос задан миллион раз, но я просто не могу заставить его работать. Может кто-то дать мне знать, что я делаю неправильно.Отправить форму после события.preventDefault?

Вот мой код:

$('#frm').submit(function(event) { 
    event.preventDefault(); 
    var formData = $(this).serialize(); 
    var email = $('input#email').val(); 
    if (email == '') { 
     alert('Please enter your email address'); 
     $('input#email').focus(); 
     return false; 
    } else { 
     $.post('http://www.domain.com/', formData, function() { 
      $('#frm').submit(); 
     }); 
    } 
}); 
+1

В чем проблема ??? – Tushar

+0

данные отправляются в другой домен, но фактическая форма не отправляется. – user2402492

ответ

1

Вы можете отправить форму с помощью DOM узла представить метод:

$.post('http://www.domain.com/', formData, function() { 
    this.submit(); // 'this' not '$(this)' 
}.bind(this)); // 'bind' to set relevant context, or use jq $.proxy(handler, this) to support older browsers 
+0

это не сработало ... данные публикуются просто отлично, но форма не подчиняется действию. Я также хотел поставить $ ('# frm'). Submit(), а не $ (this) .submit(). – user2402492

+0

Он работает для меня, используя 'bind (this)' и 'this.submit();' –

+0

Я получил его сейчас! Благодаря!!! – user2402492

0

Этот код не имеет смысла

$.post('http://www.domain.com/', formData, function() { 
     $(this).submit(); 
    }); 

вы отправляете, а затем, когда запрос возвращается с успехом, вы пытаетесь вызвать представить в виде еще раз?

Кстати, this в этом контексте относится к объекту jqXHR вызова Ajax, а не к форме. См $(this) inside of AJAX success not working

+0

Я пытаюсь отправить данные в другой домен и в то же время представить фактическую форму. – user2402492

0

Поскольку большинство ответов говорит, this не является ссылкой на форму. Затем вам нужно будет создать ссылку для него следующим образом (см. that var). В любом случае это необходимо, только если вы хотите использовать его позднее в обратном вызове success:

$('#frm').submit(function(event) { 

    // Create a reference to your form 
    var that = this; 

    event.preventDefault(); 
    var formData = $(this).serialize(); 
    var email = $('input#email').val(); 
    if (email == '') { 
     alert('Please enter your email address'); 
     $('input#email').focus(); 
     return false; 
    } else { 
     $.post('http://www.domain.com/', formData, function() { 

      // On success response do your stuff here and 
      // submit to your 'own domain' 
      // In case you don't have the action attr, give a value to this var. 
      var url = $(that).attr('action'); 
      $.post(url, formData, function() { 
       // On success response do your stuff here 
      }); 
     }); 
    } 
}); 
Смежные вопросы