2014-10-25 9 views
2

Может ли кто-нибудь рассказать мне, почему моя подача не выполняется? Журнал сообщает мне: «Проверимость прошла, отправит форму», но не отправляет?

$(function(){ 
    $("#ajax-payment-form input[type='submit']").click(function(e) { 
     // Prevent form submission 
     e.preventDefault(); 

     // Serialize data, make AJAX call 
     var str = $("#ajax-payment-form").serialize(); 
     $.ajax({ 
      type: "POST", 
      url: templateDir+"/payment_form/payment_process.php", 
      data: str, 
      context: this 
     }).done(function(msg) { 
      // If a response is received from your server 
      if(msg == 'OK') { 
       console.log('Validation passed, will submit form'); 
       $(this).closest("form").submit(); 
      } else { 
       console.log(msg); 
      } 

     }).fail(function() { 
      console.log('AJAX error'); 
     }); 
    });               
}); 

Спасибо за ваше время

Тар

+1

The $ (это) в вашей сделанной функции ссылается на th e обещаю объект более чем вероятно. Вам нужно будет привязать функцию к правильному экземпляру перед использованием '. Closest() ' – Jhecht

+0

@Jhecht OP использует свойство' context'. – undefined

+0

Не уверен, но не можете ли вы просто '$ ('# ajax-payment-form'). Submit()'? Это не похоже на то, что ваше мероприятие привязано к входам в разных формах. – rjdown

ответ

0

просто сделать это:

$(function(){ 
$("#ajax-payment-form input[type='submit']").click(function(e) { 
    // Prevent form submission 
    var $this = $(this); 
    e.preventDefault(); 

    // Serialize data, make AJAX call 
    var str = $("#ajax-payment-form").serialize(); 
    $.ajax({ 
     type: "POST", 
     url: templateDir+"/payment_form/payment_process.php", 
     data: str, 
     context: this 
    }).done(function(msg) { 
     // If a response is received from your server 
     if(msg == 'OK') { 
      console.log('Validation passed, will submit form'); 
      $this.closest("form").submit(); 
    //.... 
+0

Никакой другой, все еще не представляя форму:/ – thar

+0

@thar Вы слушаете событие 'submit 'где-то в другом месте? Если вы не уверены, послушайте событие 'submit' и вызовите метод [' isDefaultPrevented() ') (http://api.jquery.com/event.isdefaultprevented/) объекта события. – undefined

0

или короче код: (Обратите внимание, де отправить событие)

$(function(){ 
    $("#ajax-payment-form").submit(function(e) { 
    e.preventDefault(); 
    var $form = $(this); 
    $.post(
     url: templateDir+"/payment_form/payment_process.php", 
     $form.serialize(), 
     function(){ 
      if(msg == 'OK') { 
       console.log('Validation passed, will submit form'); 
       $form.closest("form").submit(); 
      } else { 
       console.log(msg); 
      } 
     }, 
     'json' 
    ).fail(function() { 
     alert("error"); 
    }); 
    }); 
}); 
+0

После этого я могу сказать, что это выполнит отправку, даже если оператор else выполняется – thar

+0

, это зависит от вашего формата ответа – luchopintado