这是动态输入形式
<form role="form" method="post" id="form1">
<input type='text' id='shipping' name='shipping[3]'>
<input type='text' id='payment' name='payment[3]'>
<input type='text' id='address' name='address[3]'>
<input type='text' id='shipping' name='shipping[4]'>
<input type='text' id='payment' name='payment[4]'>
<input type='text' id='address' name='address[4]'>
<input type='text' id='option' name='option'>
</form>
然后我的javascript(jQuery)将此表单发布到PHP服务器端
$.post("phpfile", $('#form1').serialize(),
function (data) {
}
);
如果使用serialize();它将以输入形式发布所有数据 示例:
option: exampledata
shipping[4]: exampledata
payment[4]: exampledata
address[4]: exampledata
shipping[3]: exampledata
payment[3]: exampledata
address[3]: exampledata
我只想发布诸如货运和地址之类的特定数据,而不是付款?有什么办法吗?
shipping[4]: exampledata
address[4]: exampledata
shipping[3]: exampledata
address[3]: exampledata
答案 0 :(得分:0)
在这种情况下,为什么要压缩输入内容?您可以使用POST-PARAMETER将数组和对象从javascript传递到php,而无需修改对象/数组。
var postArray = ["test1", "test2", "test3"];
jQuery.post("index.php", {arrData: postArray }, function(data){
console.log(data);
});
您可以使用$_POST["arrData"]
答案 1 :(得分:0)
以下是您的答案
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<form role="form" method="post" id="form1">
<input type='text' id='shipping' name='shipping'>
<input type='text' id='payment' name='payment[3]'>
<input type='text' id='address' name='address[3]'>
<input type='text' id='shipping' name='shipping[4]'>
<input type='text' id='payment' name='payment[4]'>
<input type='text' id='address' name='address[4]'>
<input type='text' id='option' name='option'>
<input type='submit' id='submit' name='submit'>
</form>
<script>
$('#form1').submit(function(e){
e.preventDefault();
var formData = {};
formData.shipping = $('#shipping').val();
$.ajax({
type: "POST",
url: "your-server-file-name.php",
data: formData,
success: function(response){},
error:function(error){}
});
});
</script>
</body>
</html>
需要记住的几点
注意:我仅处理运输。您可以添加要发送的所有其他元素。
答案 2 :(得分:0)
我要做的是声明一个数组,然后使用^=
运算符,该运算符将查找具有该名称的每个元素。然后,我将使用.each()
函数创建一个循环,该循环以元素的数量进行迭代。然后可以将值.push()
放入声明的数组中。然后,我遍历我的另一个文件中的数组,将数据发送到您命名的“ phpfile” 。
示例:
var shippingArray = [];
$('input[name^="shipping"]').each(function() {
shippingArray.push( $(this).val() );
});
var addressArray = [];
$('input[name^="address"]').each(function() {
addressArray.push( $(this).val() );
});
您现在有了2个完美的数组变量,可以将它们解析为所需的任何文件。我建议您研究一下jQuery AJAX。
因此在文件中,“ phpfile” :
$shippingArray=$_POST['shippingArray'];
$shippingValues=array_values($shippingArray);
$addressArray=$_POST['addressArray'];
$addressValues=array_values($addressArray);
$i=0;
$length=count($shippingArray);
while($i < $length) {
$i++;
$arrayValue=$shippingArray[$i];
//Do something with the value
}
$i=0;
$length=count($addressArray);
while($i < $length) {
$i++;
$arrayValue=$addressArray[$i];
//Do something with the value
}