2012-09-10 102 views
0

可能重複:
submit form does not stop in jquery ajax call停止提交表單無法正常工作

我有一個表格:

<form id="orderForm" onsubmit="return prepareOrder(this);" action='@ConfigurationManager.AppSettings["EpayLogonUrl"]' method="POST"> 

而且prepareOrder功能:

function prepareOrder(form) { 
    $('.wizard_next_step').attr('disabled', 'disabled'); 
    $('.wizard_next_step').addClass('disabled'); 
    $('.wizard_prev_step').attr('disabled', 'disabled'); 
    $('.wizard_prev_step').addClass('disabled');  

    $.ajax({ 
     type: 'POST', 
     url: '/Pay/CreateOrder', 
     success: function (response) { 
      if (response.IsSuccess) { 
       alert('2'); 
       $("input[type=hidden][name=Signed_Order_B64]").val(response.Message); 
      } else { 
       alert('1'); 
       toastr.options.timeOut = 10000; 
       toastr.info(response.Message); 
       return false; 
      } 
     }, 
     error: function() { 
      return false; 
     }, 
     async: false 
    }); 
} 

IsSuccess等於false時,提交不會停止的問題。爲了測試,我正確插入警報和警報顯示(1),但是仍然提交表單。問題在哪裏?

+0

而不是'返回false;''做= returnVal假;'和,**在'prepareOrder' **結束,做'返回returnVal ==假? false:true;' – Prasanth

+1

@goldenparrot - 你爲什麼不最後只返回returnVal? – nnnnnn

+0

@goldenparrot:你爲什麼要這樣做?只需'返回false;' –

回答

2

您的ajax調用返回false,但您的prepareOrder方法不是。 嘗試返回Ajax調用的假外:

function prepareOrder(form) { 
    $('.wizard_next_step').attr('disabled', 'disabled'); 
    $('.wizard_next_step').addClass('disabled'); 
    $('.wizard_prev_step').attr('disabled', 'disabled'); 
    $('.wizard_prev_step').addClass('disabled');  

    $.ajax({ 
     type: 'POST', 
     url: '/Pay/CreateOrder', 
     success: function (response) { 
      if (response.IsSuccess) { 
       alert('2'); 
       $("input[type=hidden][name=Signed_Order_B64]").val(response.Message); 
      } else { 
       alert('1'); 
       toastr.options.timeOut = 10000; 
       toastr.info(response.Message); 
       return false; 
      } 
     }, 
     error: function() { 
      return false; 
     }, 
     async: false 
    }); 

    return false;  
} 
+0

如果使用netsted函數,'return'將返回來自內部函數的值。 – Pawan

+0

@Pawan - 不會,它會返回'return'關鍵字後的任何內容(如果沒有提供值,則返回undefined)。 – nnnnnn