我正在通过AJAX
提交表单并使用jQuery
,我需要了解我如何将form arrays
传递给它。
例如,我的html会是这样的:
<input id="standard_field" type="text" name="standard_name">
<input id="some_id_1" type="text" name="my_array[my_name_1]">
<input id="some_id_2" type="text" name="my_array[my_name_2]">
<input id="some_id_3" type="text" name="my_array[my_name_3]">
现在我知道你可以使用类似的东西轻松获取jQuery中标准字段的名称:
var foo = $('standard_field').val();
但我不确定如何获取阵列数据?此外,它需要从ajax传递到PHP脚本,就像PHP脚本获取它一样,就好像表单是在没有 ajax的情况下提交一样。
这是我通常如何传递数据的一个例子:
var foo = $('standard_field').val();
var loadUrl = "some_script.php";
var dataObject = { foo: foo };
getAjaxData(loadUrl, dataObject, 'POST', 'json')
.done(function(response) {
//..........
})
.fail(function() {
//......
});
// End
function getAjaxData(loadUrl, dataObject, action, type) {
return jQuery.ajax({
type: action,
url: loadUrl,
data: dataObject,
dataType: type
});
}
首先,我如何才能从表单中传递数据,其次如何将它从jQuery传递给PHP脚本,以便PHP将其作为一个数组,就像它直接POST到PHP脚本一样?
答案 0 :(得分:2)
您应该使用serialize
HTML:
<form id="form1" action="" method="post">
<input id="standard_field" type="text" name="standard_name">
<input id="some_id_1" type="text" name="my_array[my_name_1]">
<input id="some_id_2" type="text" name="my_array[my_name_2]">
<input id="some_id_3" type="text" name="my_array[my_name_3]">
</form>
JS:
var dataObject = $('#form1').serialize();
var loadUrl = "some_script.php";
getAjaxData(loadUrl, dataObject, 'POST', 'json')
.done(function(response) {
//..........
})
.fail(function() {
//......
});
// End
function getAjaxData(loadUrl, dataObject, action, type) {
return jQuery.ajax({
type: action,
url: loadUrl,
data: dataObject,
dataType: type
});
}
答案 1 :(得分:1)
您可以使用此插件http://malsup.com/jquery/form/
示例代码:
JS:
$('#your_button').change(function() {
var options = {
url: 'your_url',
type: 'POST',
dataType: 'json',
beforeSubmit: function() {
// Callback function to be invoked before the form is submitted
},
success: function(data) {
// Callback function to be invoked after the form has been submitted
},
error: function() {
// Callback function to be invoked upon error
}
};
// do something
});
PHP:
var_dump($_POST);
答案 2 :(得分:1)
您可以使用String.slice方法提取标签名称。
var input = $('#myform input');
var data = [];
var name, label, value = '';
for(var i in input) {
name = input.eq(i).attr('name');
label = name.splice(9, -1);
value = input.eq(i).val();
data[label] = value;
}
data = JSON.stringify(data);
为了检测何时它是一个数组你可以使用String.indexOf(&#39; [&#39;)喜欢
对于未知的数组结构:
array_name = name.splice(0, name.indexOf('['));
label = name.splice(name.indexOf('['), name.indexOf(']'));