我需要用PHP通过电子邮件发送一系列产品,但是我遇到了"foreach“的麻烦。
这是我的密码:
//Form
<form action="" method="post">
<select name="product[]" class="product" >
<option value="product1">product1</option>
<option value="product2">product2</option>
<option value="product3">product3</option>
</select>
<input type="text" name="boxes[]" value="Boxes:" class="boxesInput" size="20">
</form>
这是获取数据的jQuery代码(我正在编写wordpress,无法找到使用$_SERVER‘wordpress’的方法.
//jQuery
var productVal = jQuery(".product").val();
var boxesVal = jQuery(".boxesInput").val();
jQuery.post("sendemail.php",
{ boxes: boxesVal, product: productVal } );
这是sendemail.php文件
//sendemail.php
$producto = $_POST['product'];
$boxes = $_POST['boxes'];
$body = "Order Details \n" ;
,这是麻烦,,我的前瞻:
foreach($producto as $id => $row )
{
$body .= "Product: " . $producto[$id] . "\n";
$body .= "Boxes: " . $boxes[$id] . "\n";
}
$mailTo = 'my@email.com';
$subject = "Quotes Form";
$headers = 'From: <'.$mailTo.'> ' . "\r\n" . 'Reply-To: ' . $mailTo;
mail($mailTo, $subject, $body, $headers);
发布于 2011-07-20 23:31:25
正如Serj所指出的,为了让php理解表单数据,您需要序列化表单数据。可能更好用
$.post("sendmail.php", $("form").serialize());
发送表单数据。另一个问题是声明变量
$boxes = $_POST['boxes'];
但是领班试图访问$cajas[$id]
?如果您将foreach循环更改为
foreach($producto as $id => $row )
{
$body .= "Producto: " . $producto[$id] . "\n";
$body .= "Cajas: " . $boxes[$id] . "\n";
}
应该管用的。请注意,表单元素实际上适合生成数组,因为它们只使用单个值。
发布于 2011-07-20 23:50:29
jQuery .val将创建一个与JavaScript数组不兼容的JavaScript数组。您需要在JavaScript中序列化,在PHP中不序列化:
这是一个这样的函数:http://code.activestate.com/recipes/414334-pass-javascript-arrays-to-php/
https://stackoverflow.com/questions/6769622
复制相似问题