发送电子邮件阵列(foreach)

时间:2011-07-20 23:12:37

标签: php jquery arrays forms email

我需要通过电子邮件发送一系列带有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 ['PHP_SELF'相关的方法] ...

//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:

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);

2 个答案:

答案 0 :(得分:1)

正如Serj所指出的,你需要序列化表单数据以便php理解它。可能更好用

$.post("sendmail.php", $("form").serialize());

发送您的表单数据。另一个问题是您声明变量

$boxes = $_POST['boxes'];

但是foreach试图访问$cajas[$id]?如果你改变你的foreach循环

foreach($producto as $id => $row )
{
 $body .= "Producto: " .  $producto[$id]  . "\n";
 $body .= "Cajas: " .  $boxes[$id]  . "\n"; 
} 

它应该有用。请注意,您的表单元素实际上适合生成数组,因为它们只采用单个值。

答案 1 :(得分:0)

jQuery .val将创建一个与PHP数组不兼容的JavaScript数组。您需要在JavaScript中序列化并在PHP中反序列化:

这是一个这样的功能: http://code.activestate.com/recipes/414334-pass-javascript-arrays-to-php/