我面临的一个问题是,在我创建jQuery帖子之后,我能够接收所有数据但是作为一个和平,所以当我开始重述它们时我成功直到最后一部分是插入数据库,在for循环内部和if循环我得到的值,但当我想开始将它们插入数据库时,我得到空值,下面是for循环和if循环
if ($action == "insert")
{
$fields = explode("&",$data);
foreach($fields as $field)
{
$field_key_value = explode("=",$field);
$key = urldecode($field_key_value[0]);
$value = urldecode($field_key_value[1]);
$id = $row['id'];
$date1 = date("d/n/Y");
foreach ($cart->get_contents() as $item)
{
$item_id = $item['id'];
$item_name = $item['name'];
$item_price = $item['price'];
$item_qty = $item['qty'];
$item_ids = explode("-",$item_id);
for($i = 0; $i < count($item_ids); $i++)
{
$item_idn = join("",$item_ids);
}
if($key == $item_id."id")
{
$ids = $value;
echo $ids."\r\n";
}
elseif($key == "Small".$item_idn)
{
$small= $value;
echo $small."\r\n";
}
elseif($key == "large".$item_idn)
{
$large= $value;
echo $large."\r\n";
}
elseif($key == "medium".$item_idn)
{
$medium= $value;
echo $medium."\r\n";
}
elseif($key == "xlarge".$item_idn)
{
$xlarge= $value;
echo $xlarge."\r\n";
}
elseif($key == "qty".$item_idn)
{
$qty = $value;
echo $qty."\r\n";
}
elseif($key == "Total".$item_idn)
{
$subtotal = $value;
echo $subtotal."\r\n";
}
elseif($key == "finaltotal")
{
$finaltotal = $value.",";
$final = explode(",",$finaltotal);
for($i = 0; $i < count($final); $i++)
{
$totalf = $final[$i];
break 3;
}
}
}
}
}
答案 0 :(得分:1)
来自jQuery docs:
.serialize()方法以标准URL编码表示法
创建文本字符串
所以在PHP方面,你会得到一个类似的字符串:
a=1&b=2&c=3&d=4&e=5
无需爆炸&
(或任何其他hocus-pocus),您可以轻松访问提交的变量,例如:
$a = $_POST['a']; //1
当然,当您通过$_GET
提交数据时,需要使用$_GET
。
答案 1 :(得分:0)
好像你有很多问题。如果您的jQuery发布到您的PHP脚本,您可以通过$ _POST数组获取所有键/值。您可以像$finaltotal = $_POST['finaltotal']
一样获得$ finaltotal。如果您的jQuery不是POSTing,而是将它们作为GET请求发送,您可以获得与$finaltotal = $_GET['finaltotal']
相同的值。
另外,关于你的大if / elseif代码块,我建议你使用switch语句,如果你要保持你的代码原样。
switch($key)
{
case 'finaltotal':
//do stuff
break;
default:
//do default
break;
}
答案 2 :(得分:0)
首先,您可以使用$ _GET / $ _ POST作为提交数据,如fabrik所指出的,或者(如果由于某种原因,您实际上只有 $ data 中的数据)可以使用内置函数parse_str。
parse_str($data, $fields);
foreach($fields as $key => $field) {
foreach ($cart->get_contents() as $item) {
if($key == ...) {
...
}
}
}
如果我正确理解你在这里做了什么,你需要将break 3;
移出你的for循环:
elseif($key == "finaltotal") {
$finaltotal = $value.",";
$final = explode(",",$finaltotal);
for($i = 0; $i < count($final); $i++){
$totalf = $final[$i];
}
break 3;
}