2012-05-04 33 views
0

簡而言之 - 當用戶點擊表單的提交按鈕時,根據某些條件,我們稱之爲情況A,一些AJAX調用,讀取響應並基於響應,向用戶顯示確認對話,然後當用戶點擊是時,我使用.submit()(而不是AJAX提交)提交表單。在另一種情況下,我們稱之爲情況B,我允許表單提交。問題是,在情況A中,服務器端的參數$_REQUEST中不存在提交輸入參數本身。我們在服務器端代碼$_REQUEST['submitform']上有一些檢查。當使用jquery提交表單時,修正輸入類型提交參數時不適用的正確方法

這是爲什麼呢?我檢查了this question.serialize()方法沒有按設計序列化提交類型的輸入。這種情況是否與設計有關?我沒有做任何序列化。

解決這個問題的正確方法是什麼? 注 -我需要有正常的表單提交以及jquery表單提交工作在我的情況。

詳情 -

我有一個這樣的形式 -

<form class="clearfix" enctype="multipart/form-data" action="/banner/addbanner/-1/2756?name=23 apr adv traffic management test&amp;action=add" method="post" id="frmBanners" name="frmBanners"> 
    <textarea id="comments" rows="3" cols="47" name="data[BannerInfo][comments]"></textarea> 
    <input type="text" id="description" maxlength="255" size="50" value="" name="data[BannerInfo][description]"> 

    <input type="submit" class="stdButton save" value="Submit" name="submitform" id="submitform"> 
</form> 

而且一些JavaScript -

$("input#submitform").click(preValidateUrls); 

function preValidateUrls() 
{ 

    if(Case A, a particular condition and URLs are not empty) 
    {//Ajax call to validate some URLs 

     $.ajax({ ... 

     success: function(res) 
     { 
     if(validation fails) 
     { 
      if(confirm(msg)) 
      { //Display a javascript confirm dialogue, if user still wants to continue 
       $("form#frmBanners").submit(); 
      } 
     } 
     } 
    }); //end of $.ajax 

     return false; //do not allow form to get submitted before ajax response has not been received. 

    } 
    else 
    {//case B, let the form submit normally 
     return true; 
    } 
} 

在服務器端代碼 -

if(isset($_REQUEST['submitform']) && $_REQUEST['submitform']=='Submit') 
{ 
    //form submission detection - does not work in case A. 
} 

問題是,在使用jquery進行表單提交的情況下,即表單提交檢測不起作用,即參數「submitform」不存在於$ _REQUEST中。

回答

0

作爲一種快速簡單的修復方法,您可以手動將「& submitform = submit」附加到.serialize()輸出中。這應該夠了吧。

相關問題