2016-04-24 11 views
0

私のフォームの値を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と$アゾンは何の値が含まれていない、他の変数は、この問題を持っていない、彼らは正しく表示されます。

誰でもこの問題を引き起こす原因を教えてもらえますか?解決策/回避策はありますか? ありがとうございました!

+0

xmlhttp.open( "GET"、 "assets/php/getidopont.php?q =" + str、true); xmlhttp.open( "POST"、 "assets/php/getidopont.php?q =" + str、true)にする必要があります。それではないでしょうか? –

答えて

1

"-lista"という2つの変数を再定義する場所はありません。

彼らは次のようになります。

$szolgaltatas = $_POST['szolgaltatas']; 
$azon = $_POST['idopont']; 
+0

ありがとう、これは本当に問題でした! –

1

は、HTMLページにあなたの選択したタグ名を確認し、$_POST["your tag name here "]で適切にそれを置きます。

単純に、このタイプのエラーが発生しないように、すべての入力と選択タグの名前をコピーして貼り付けます。

+1

ありがとう、これは問題を解決! –

関連する問題