2012-06-27 45 views
4

我有一个Javascript数组,我想添加到提交表单时数组数组。除了已经从表单发布的其他变量之外,还应该添加Javascript数组。有没有办法在JQuery中做到这一点?添加一个Javascript数组到表单POST提交变量

Ex。

形式:

<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 
     ) 
) 
+1

看到这一点: http://stackoverflow.com/questions/3322632/is-it-possible-to-submit-javascript-array-along-with-form-submission – haroonxml

回答

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

有是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 
    }); 

}

+0

如何将这种眼神在一个jQuery事件处理程序? – Stephen305

相关问题