7

MySQL データベースにクエリを実行できるように、AJAX を使用して POST メソッドを介して複数のパラメーターを PHP ファイルに渡そうとしています。

HTML ファイル :

        <div class="dropdown dropdown-dark">
            <select  class="dropdown-select" id="searchselect11" required>

                        <option value="faculty">Faculty</option>
                        <option value="dept">Dept.</option>
                        <option value="course">Course</option>
                        <option value="year">Year</option>
                        <option value="name">Name</option>

            </select>
        </div> 


<td style="padding:5px;"> <input type="text" id="searchtext11" required></td>

<button id="searchgo1"  onclick="searchone()"></button>

これは、ドロップダウン値とテキストボックス値に正常にアクセスし、それぞれ変数svsearchtext11変数に保存する Javascript ファイルです。しかし問題は、2 つの値を PHP ファイルに渡すことです。問題the_dataは、渡される変数にあるようですxmlhttp.send(the_data);

機能は次のsearchone()とおりです。

function searchone()
{
//alert("hi");

var xmlhttp;
var sel = document.getElementById('searchselect11'); 
var sv = sel.options[sel.selectedIndex].value;
var searchtext11= document.getElementById("searchtext11").value;
var  the_data = 'select='+sv+'text='+searchtext11;


if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }




  xmlhttp.open("POST", "searchone.php", true);          
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");            
  xmlhttp.send(the_data);       


  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
      document.getElementById("searchresults").innerHTML = xmlhttp.responseText;
    }
  }
}

この PHP コードは、次の場合にのみ機能します。

var the_data='select='+sv;

searchone.php

<?php   


if (isset($_POST['select'])) {
    $str = $_POST['select'];    // get data

    echo $str;
}
?>

これらの変数を使用して SQL クエリを作成できるように、ドロップダウンとテキスト ボックスの両方の値を PHP ファイルに取得するにはどうすればよいですか。

4

2 に答える 2

11

GETの場合と同様に、アンパサンドを使用する必要があります。さらに、テキストをエンコードして、特別な意味を持つ可能性のある文字が含まれていないことを確認する必要があります

var the_data = ''
    + 'select=' + window.encodeURIComponent(sv)
    + '&text=' + window.encodeURIComponent(searchtext11);
//     ^                    ^^

サーバー側で手動でデコードする必要はありません。POSTデータがx-www-form-urlencoded.

于 2013-06-29T17:02:39.137 に答える
5

この文字列に & を追加します。

var  the_data = 'select='+sv+'&text='+searchtext11;
于 2013-06-29T17:00:42.303 に答える