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)

しかし、あなたのページはHTTPGETメソッドを使用して要求しています:

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

したがって、ページがHTTP POSTを使用して要求された場合にのみデータが含まれ、GETは含ま$_POST['check']れないため、このようなものはありません。$_POST


とHTTPGETを使用してページをリクエストする場合は、PHPスクリプトで、から$_GETではなく、から読み取る必要があります$_POST

于 2012-05-17T14:36:55.580 に答える