您好我正在尝试在Validate的 submitHandler 中使用 ajax 提交表单,同时使用美化多个选择的Chosen库。以下作品:
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 框架,所以希望有一个简单的解决方案。
PS 我正在使用 php5 和 jQuery 1.8.3。这是我到目前为止所发现的,也许我只是在尝试添加它之前弄乱了选择数组的格式:
Jquery.SerializeArray 如何添加更多参数呢?
谢谢!