0

これは難しい..私は初めて ajax を使用しようとしています。基本的に、最初のフィールドからオプションを選択すると、js と xml は、SQL テーブルから取得した情報に基づいて次のドロップダウンを作成する php スクリプトを実行します。驚いたことに、私の最初の試みでは、すべてがうまく機能します。問題は、最終的なクエリを実行すると、ポストされる変数 ( $_POST['ports'];) が、タグで選択された値ではなく、単一の空白文字に評価されるときに発生します。コードの時間:

html:

<h1>Enter port data to set how your table will look</h1>
<select style="width:150px;" onChange="showUser(this.value)">

<option value="">Select A Table Type</option>
<option value="option1">option1</option>
<option value="247">Custom</option>
</select>
<br>
<div id="select2">
</div>

JavaScript:

function showUser(str){
document.getElementById('hide').style.display='none';
document.getElementById('select2').innerHTML="";
if(str===""){
    document.getElementById('hide').style.display='none';
    document.getElementById('select2').innerHTML="";
    return;
}

if(str==="247"){
    document.getElementById('hide').style.display='block';
    return;
}

// code for IE7+, Firefox, Chrome, Opera, Safari
if (window.XMLHttpRequest){
    xmlhttp=new XMLHttpRequest();
}

// code for IE6, IE5
else{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

//set up return
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("select2").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethtml.php?q="+str,true);
xmlhttp.send();
}

gethtml.php

//include connection
include 'log.php';

//get vars
$q=$_GET['q'];

//make the query
$sql = "SELECT DISTINCT Model 
FROM tbl
WHERE Manufacturer = '".$q."'";

//make the new box
echo '<select name="ports" style="width:150px;">';
echo '<option>Select A Port Total</option>';
$i=1;
foreach($conn->query($sql) as $row) {
echo $row['Model'];
echo '<option value="'.$row['Model'].'">'.$row['Model'].'</option>';
$i++;
}
echo "</select>";

したがって、すべてが gethtml.php に送信されます。クエリは正しく実行され、<select>ボックスはそこにありますが、その<select>一部にエラーがあるようで、それが何であるかわかりません。<select>これは、めちゃくちゃになっているフォームを送信した後に実行される送信 php のスニペットです。

echo "<pre>";print_r($_POST);echo"</pre>";

出力する

Array
(
[ports] => 
)

わかりませんが、そのビットを強調表示すると、そこに空白文字があり、それを実行して、isset()私が正しかったこと、そこに文字があることを確認しました。

これは、firebug で表示したときに xml で作成された html の画像です。

火虫

誰にもアイデアはありますか?これは非常にイライラさせられます..明らかに、firebugの画像は本来あるべき姿ではないことを示しています...さらに情報が必要な場合は、お問い合わせください

注目に値する場合は、クロムを使用しています。

4

2 に答える 2

1

ajaxリクエストを投稿していません。

xmlhttp.open("GET","gethtml.php?q="+str,true);

get経由で送信しています。php では、print_r($_GET)代わりに試し$_POSTて、正しい値が表示されるかどうかを確認してください。

于 2013-01-30T18:45:23.740 に答える
-1
    foreach($conn->query($sql) as $row) {
echo $row['Model'];
echo '<option value="'.$row['Model'].'">'.$row['Model'].'</option>';
$i++;
}

上記の 2 行目を見てください。

于 2013-01-30T18:37:23.073 に答える