我有一个用户可以订购商品的网站。我目前正在向PHP脚本发送各种信息,以便可以从那里将它们添加到数据库中:
$.ajax ({
type: "POST",
url: "./pay.php",
dataType: "json",
data: {
"firstName" : firstName,
"lastName" : lastName,
"email" : email,
"price" : price
}
});
这很好用。现在我想发送两个包含订购产品的ID和数量的数组。由于我不知道在任何给定点有多少产品或它们的ID是什么,我不能像上面那样将它们作为单独的项目添加。目前我在不同的数组中有产品ID及其相应的数量:
productIds: ["6", "1"]
quantities: ["1", "4"]
我想将这些数组与其他变量一起发送到PHP脚本,这样我就可以遍历这些数组并将信息插入到数据库中。
我可以这样做吗?
$.ajax ({
type: "POST",
url: "./pay.php",
dataType: "json",
data: {
"firstName" : firstName,
"lastName" : lastName,
"email" : email,
"price" : price,
"productIds" : productIds,
"quantities" : quantities
}
});
我目前能够在PHP脚本中以这样的方式访问的非数组变量:
$email = $_POST['email'];
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$price = $_POST['price'];
我想在PHP脚本中循环遍历这样的productIds数组,但我想我错过了一些东西:
$i = 1;
foreach ($_POST['productIds'] as $value) {
$sql = 'INSERT INTO orders SET
product_id = "'.$_POST['productIds'][$i].'",
quantity = "'.$_POST['quantities'][$i].'"';
$result = $conn->query($sql);
$i++;
}
如何使用Ajax和其他非数组数据将javascript数组发送到PHP脚本?
答案 0 :(得分:2)
只需将数组传递给数据参数
即可var productIds = ["6", "1"];
var quantities = ["1", "4"];
$.ajax ({
type: "POST",
url: "./pay.php",
dataType: "json",
data: {
"firstName" : firstName,
"lastName" : lastName,
"email" : email,
"price" : price,
"productIds": productIds,
"quantities": quantities
}
});
答案 1 :(得分:1)
您可以在收集表单数据时立即构建JavaScript对象。将该对象直接发送给PHP。像这样:
//Your object could look like this
var data = {
name: 'blah',
product_data: {
'<some product id>': '<some product name>',
'<another product id>': '<another product name>'
}
}
在PHP方面,您可以通过$ _POST product_data
中的密钥array
以关联数组的形式访问产品数据。现在由您决定如何收集表单数据。
<强>更新强>
$products = $_POST['product_data'];
foreach($products as $product_id => $product_name){
echo $product_id.', '.$product_name;
}
答案 2 :(得分:0)
PHP将接受数组参数,但您必须以可接受的形式发送参数
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
?>
对于HTTP帖子,您只需通过$_POST
变量访问数组。
在JavaScript方面,代码是这样的,
$.post(url, {'arr[]': array}, function(data){
// do something with received data
});