0

我已经制作了一个表格,它从 xml 文件中获取其中的复选框信息。现在我想用 php 邮寄该表单,但我收到“警告:第 8 行的 mailer.php 中为 foreach() 提供的参数无效”错误。这是我表单中的复选框部分,用 javascript 编写:

if (window.XMLHttpRequest)
        {// IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
    else
        {// IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
xmlhttp.open("GET","dehoek.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 
x=xmlDoc.getElementsByTagName("product");

for (var i=0;i<x.length;i++)
{ 
document.write('<input name="check[]" id="checkbox'+i+'" type="checkbox" value="'+(x[i].getElementsByTagName("naam")[0].childNodes[0].nodeValue)+'" /><label for="checkbox'+i+'">'+(x[i].getElementsByTagName("naam")[0].childNodes[0].nodeValue)+' &nbsp; €'+(x[i].getElementsByTagName("prijs")[0].childNodes[0].nodeValue)+' </label>');
}

这是我的php:

$aan =  $_POST['to']; 
$onderwerp =  "Bestelling"; 
$naam =  $_POST['naam']; 
$email =  $_POST['email']; 
$message =  "Producten:"; 

foreach($_POST['check'] as $value) { 
$check_msg .= "$value\n";
} 

$body =  "From: $naam\n E-Mail: $email\n Message:\n $message\n $check_msg"; 

echo  "Uw bestelling is succesvol verstuurd."; 
mail($aan,  $onderwerp, $body); 

我希望你们当中有人知道我的代码有什么问题,因为我真的不明白。

在此先感谢 Jan Thiemen

4

1 回答 1

1

您目前正在您的 PHP 脚本中尝试从以下内容读取$_POST

foreach($_POST['check'] as $value)

但是您的页面正在使用HTTP GET方法进行请求:

xmlhttp.open("GET","dehoek.xml",false);

因此,没有这样的东西$_POST['check']——因为仅在使用HTTP POST而不是 GET$_POST请求页面时包含数据。


如果您使用 HTTP GET 请求您的页面,您必须在 PHP 脚本中从 读取$_GET,而不是从$_POST.

于 2012-05-17T14:36:55.580 回答