2015-04-07 77 views
0

考慮以下幾點:jQuery的serializeArray失敗

PHP:

<form id="f-submit" method="post" action=""> 

    <button class="btn-submit" name="update" type="submit">APPROUVE</button> 

</form> 

的jQuery:

$("button.btn-submit").click(function(event) { 
    event.preventDefault(); 

    var formData = $("#f-submit").serializeArray(); 
    formData.push({actiontype: "delete"}); 

    $.ajax({ 
     type: "POST", 
     url: "includes/submit_comment.php", 
     data: formData 
    }).done(function(data) { 

     alert(data); 

    }).fail(function(data) { 

     alert('Ajax failed.'); 

    }); 
}); 

submit_comment.php:

if (isset($_POST['actiontype'])) { 

    echo 'found'; 

} else { 

    echo 'not found'; 

} 

出於某種原因,我總是得到'未找到'。

但是,當我發送數據,而無需序列化,像這樣,

var formData = ({actiontype: "delete"}); 

它的工作原理!

所以問題必須在serializeArray()上,但它是什麼?我要瘋了,這一個...

回答

1

試試這個語法時才:

formData.push({name: 'actiontype', value: delete}); 
+0

就這樣!我花了1個小時研究這個... – Marco

0

serializeArray()產生一個由名稱和值組成的對象。 您是否嘗試過調試var formData = $("#f-submit").serializeArray();?在你的情況下,它不應該產生名稱/值對,因爲:

只有「成功的控件」被序列化爲字符串。由於未使用按鈕提交表單,所以沒有提交按鈕值被序列化。對於要包含在序列化字符串中的表單元素的值,元素必須具有name屬性。來自文件選擇元素的數據不會被序列化。 jQuery doc

因此,您必須添加不同的提交輸入。讓我們來看看這個聰明的解決方案:jQuery serializeArray doesn't include the submit button that was clicked

+0

我已經添加了類似建議的輸入,沒有成功... – Marco