2011-07-20 59 views
0

我需要通過電子郵件與PHP發送一系列產品,但我遇到了「foreach」的問題。發送電子郵件數組(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 = '[email protected]'; 
$subject = "Quotes Form"; 
$headers = 'From: <'.$mailTo.'> ' . "\r\n" . 'Reply-To: ' . $mailTo; 
mail($mailTo, $subject, $body, $headers); 
+1

什麼麻煩? –

+1

你必須實際告訴我們什麼是錯的。 –

+0

使用超級全局$ _POST來獲取數據。不需要jQuery。 – iLLin

回答

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"; 
} 

它應該工作。請注意,表單元素實際上適合於生成數組,因爲它們只取單值。

0

jQuery .val將創建一個JavaScript數組,它與PHP數組不兼容。您需要在JavaScript序列化和反序列化PHP:

這是一個這樣的功能: http://code.activestate.com/recipes/414334-pass-javascript-arrays-to-php/

+1

'.val()'返回一個字符串,而不是一個數組。 – MacMac

+1

Serj是對的。 +1 – Tomm

+0

Serj錯了。 -1。在閱讀文檔之前,你必須饒恕人們,確保你知道。只選擇多個返回一個數組。 –