在表单提交时将JavaScript数组添加到POST变量

5

当表单提交时,我有一个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
        )
)

1
请看这里: http://stackoverflow.com/questions/3322632/is-it-possible-to-submit-javascript-array-along-with-form-submission - haroonxml
2个回答

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

}


这在 JQuery 事件处理程序中会是什么样子? - Stephen305

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接