私のフォームの値をPHPスクリプトに投稿する際に問題があります。フォームには、名前、電子メール、電話、メッセージ+ドロップダウンリストなどの一般的なフィールドがあります。私は1番目のフォームの選択に基づいて2番目のリストの値を生成するAJAXを使用しています。PHP - AJAX - POST経由でフォームの値が渡されない
私は転記する前に見て、私は主にAJAXのためのJQueryを使用する質問が見つかりました、これは私がこの質問を投稿している理由です。
この問題は、ドロップダウンリストの値をエコーするときにのみ発生します。ここで
は、完全なソースコードです:
HTMLフォーム:
<form name="booking" action="assets/php/booking_form.php" onsubmit="return bookingValidate()" method="post">
<div>
<label>Some text</label>
<select name="szolgaltatas" id="szolgaltatas" onchange="getIdopont(this.value)" data-placeholder="..." style="width:100%;" tabindex="5">
<option value="">...</option>
<option value="hajvagas">Option 1</option>
<option value="hajfestes">Option 2</option>
<option value="alkalmi">Option 3</option>
<option value="szoli">Option 4</option>
</select>
</div>
<div>
<label>Some text</label>
<select name="idopont" id="idopont" data-placeholder="some text" style="width: 100%;" class="" tabindex="5">
</select>
</div>
<div>
<label>Name</label>
<input type="text" name="name" placeholder="some text">
</div>
<div>
<label>Phone</label>
<input type="text" name="phone" placeholder="some text">
</div>
<div>
<label>Email</label>
<input type="text" name="email" placeholder="some text">
</div>
<div>
<label>Message</label>
<textarea name="message" placeholder="some text"></textarea>
</div>
</form>
AJAX用のJavascript:AJAX用
function getIdopont(str) {
if (str == "") {
document.getElementById("idopont").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("idopont").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET","assets/php/getidopont.php?q="+str,true);
xmlhttp.send();
}}
PHP:
フォーム処理のための<?php
$q = utf8_encode($_GET['q']);
$con = mysqli_connect('localhost','user','password','dbname');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,'dbname');
$sql="SELECT * FROM foglalas WHERE foglalt = 'N' AND datum > SYSDATE() AND szolgaltatas = '".$q."'";
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result)) {
echo '<option value="' . $row['azon'] . '">' . utf8_encode($row['dolgozo_nev']) . ' - '. $row['datum'] . ' - ' . $row['idopont'] . ' </option>';
}
mysqli_close($con);
?>
PHP:
<?php
$szolgaltatas = $_POST['szolgaltatas-lista'];
$azon = $_POST['idopont-lista'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$email_vendeg = $_POST['email'];
echo "$szolgaltatas\n$azon\n$name\n$phone\n$email_vendeg\n$message";
?>
最後に
私は値をエコー、$ szolgaltatasと$アゾンは何の値が含まれていない、他の変数は、この問題を持っていない、彼らは正しく表示されます。
誰でもこの問題を引き起こす原因を教えてもらえますか?解決策/回避策はありますか? ありがとうございました!
xmlhttp.open( "GET"、 "assets/php/getidopont.php?q =" + str、true); xmlhttp.open( "POST"、 "assets/php/getidopont.php?q =" + str、true)にする必要があります。それではないでしょうか? –