2012-11-16 58 views
0

我有一個窗體,它在Colorbox中打開並通過Ajax/JQuery提交給它自己。但是,似乎傳遞的數據不包括提交按鈕本身的值。無論我使用多個提交還是僅使用一個,$ _POST ['submitButton']中都沒有數據,並且它不響應isset()或empty()。提交按鈕不通過AJAX/JQuery返回值到自我處理的形式

表格的其他部分只是很好。我可以回聲$ _ POST [ '名']和$ _POST [ '電子郵件'],只是沒有$ _ POST [ '提交按鈕']

這裏是(的一個精簡版)我的表格:

<form id="sub-process" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<input name="name" type="text" value=""> 
<input name="email" type="text" value=""> 
<input name="submitButton" type="submit" value="Submit"> 
</form> 

這裏是jquery處理通過AJAX提交的表單,而不是HTTP請求。

jQuery(function(){ 
jQuery('.cbox-form').colorbox({maxWidth: '75%', onComplete: function(){ 
cbox_submit(); 
}}); 
}); 

function cbox_submit() 
{ 
jQuery("#sub-process").submit(function(){ 
jQuery.post(
    jQuery(this).attr('action'), 
    jQuery(this).serialize(), 
    function(data){ 
    jQuery().colorbox({html: data, onComplete: function(){ 
     cbox_submit(); 
    }}); 
    } 
); 
return false; 
    }); 
} 
+2

'serialize'將不包含提交按鈕的值,因爲表單不是由提交按鈕提交的。只有「成功的控件」被序列化爲字符串。 – itachi

+0

這令人沮喪。我正在考慮用隱藏的值來解決它,但是根據點擊哪個按鈕並提交表單,我會用什麼JS來更改隱藏按鈕的值? – user1621945

+0

在提交按鈕上放置一個點擊處理程序,並讓它向它提交的對象添加一個適當的屬性。 – Barmar

回答

0

嘗試使用$_POST['submitButton']

+0

我做了,沒有工作。 – user1621945

+0

也許我錯過了一些東西,但OP表示沒有$ _POST ['submitButton']中的數據 – kinakuta

+0

我剛剛編輯時,我意識到我已經寫了$ _POST ['submit'],而不是$ _POST [ '提交按鈕']。我已經嘗試過兩次,都無濟於事。 – user1621945

0

jQuery的序列化()函數是怎麼樣的離奇和特殊。我發現它在許多情況下不是很有用。你可能想試試serializeObject插件。我發現它在很多情況下在serialize()對我不起作用的情況下工作。

+0

這很奇怪,因爲這是成功控制定義中的w3標準。 – itachi

1

我知道這是一個老問題,但它看起來像人們不明白@itachi有正確的答案。

serialize方法永遠不會從提交按鈕返回一個值。它不會返回帖子中的提交按鈕。 您將盡最大努力使用隱藏的表單域並向該按鈕添加單擊事件。