我有一个Javascript数组,我想在提交表单时添加到post数组。除了已经从表单发布的其他变量之外,还应添加Javascript数组。有没有办法在JQuery中执行此操作?
实施例
形式:
<form id="my-form" action="/create.php" method="post">
<input id="first_name" type="text" />
<input id="last_name" type="text" />
</form>
Javascript数组:
<script type="text/javascript">
var external_ids = [{"name":"SSN","value":"555-55-5555"},
{"name":"PID","value":"GBNT22"}];
</script>
如果可能的话,这就是我希望得到的PHP $ _POST数组:
Array
(
[first_name] => John
[last_name] => Smith
[external_ids]=>
(
[SSN] => 555-55-5555
[PID] => GBNT22
)
)
答案 0 :(得分:2)
你去了:
var external_ids = [{"name": "SSN", "value": "555-55-5555"},
{"name": "PID", "value": "GBNT22"}];
// form fields
var values = {};
var fields = $('#myForm :input');
$.each(fields, function(i, field) {
var dom = $(field),
name = dom.attr('id'),
value = dom.val();
values[name] = value;
});
// add array
values.external_ids = {};
$.each(external_ids, function(i, field) {
values.external_ids[field.name] = field.value;
});
// post data
$.post('/endpoint', values);
查找此jsfiddle中的代码。
答案 1 :(得分:1)
jQuery上有serialize()函数。你看过这个吗?
或者您可以使用以下内容:
function onSubmit(){
var toSend = [
first_name : 'John',
last_name : 'Smith',
external_ids : {
SSN: '555-55-5555',
PID: 'GBNT22'
}
];
$.post( yourUrl, toSend, function(data){
//callback
} );
}