嗨我想提交一個表格使用內部Validate的submitHandler,也使用Chosen庫美化多個選擇。以下作品:jQuery提交與多個陣列的阿賈克斯
submitHandler: function(form) {
var form = $(this.currentForm);
var data = {
first_name : form.find('#first_name').attr('value'),
last_name : form.find('#last_name').attr('value'),
chosen_people : form.find('#chosen_people').val(),
};
$.ajax({
type : "POST",
url : "formhandler.php",
data : data,
success : function(response) {
console.log(response);
}
});
}
服務器響應:
array(
['first_name'] => 'John'
['last_name'] => 'Smith'
['chosen_people'] => array(
[0] => 37
[1] => 42
)
)
的問題是,我的方式是大和經常變化,我不希望有保留枚舉所有輸入和選擇要素。我想就這樣說:
var inputs = form.find('input').serializeArray();
var selects = form.find('.chzn-select').val();
var data = $.merge(inputs, selects);
...
我試過的手動鍵入東西每樣組合:
for(var select in selects)
selects[select] = {'name' : select, 'value' : selects[select]};
var serializedSelects = {'name' : 'chosen_people', 'value' : selects };
var data = $.merge(inputs, serializedSelects);
但我就是不能得到數組正確嵌套以便服務器在它的post變量中有正確的數組結構。
問題的關鍵在於儘管jQuery爲元素提供了$ .serializeArray(),但它並沒有提供像$ .paramArray()這樣的關聯數組並將其轉換爲序列化數組。它只能輸出序列化的字符串,這些字符串很難進一步處理。我不想包含另一個Ajax框架,所以希望有一個簡單的解決方案。
P.S.我使用php5和jQuery 1.8.3。這是我迄今爲止的發現,也許我只是搞亂了選擇陣列的格式化之前我嘗試添加它:
jQuery post() with serialize and extra data
How to serialize a JavaScript associative array?
Jquery.SerializeArray how to add more parameters to it?
謝謝!
爲什麼不只是'form.serializeArray()'? –
您是否試圖獲取表單中所有元素的值,或者只是一些? – Musa