【问题标题】:Send email array (foreach)发送电子邮件数组(foreach)
【发布时间】:2011-07-20 23:12:36
【问题描述】:

我需要使用 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);

【问题讨论】:

  • 你必须真正告诉我们出了什么问题。
  • 使用超级全局$_POST抓取数据。不需要 jQuery。
  • 嗯,$.post() 应该是一个 ajax 调用......因为你需要 jQuery/javascript。据我所知,他在他的 sendmail.php 中使用了 $_POST ... :-|

标签: php jquery arrays forms email


【解决方案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"; 
} 

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • .val() 返回一个字符串,而不是一个数组。
    • Serj 错误。 -1。在你责备人们阅读文档之前,请确保你知道。只选择多个返回一个数组。
    • 这正是他在这个例子中想要做的!!!看 name="product[]" 两个括号创建一个数组!是的,他还需要在他的 HTML 中添加一个 multiple 属性...以使他的用户能够选择多个,但是括号创建了一个数组,再次,请在发布废话之前查看它!
    • 好的。没有必要大喊大叫。
    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    相关资源
    最近更新 更多