0

这是一个艰难的.. 我第一次尝试使用 ajax。基本上在从第一个字段中选择一个选项后,js 和 xml 运行一个 php 脚本,该脚本根据它从 SQL 表中提取的信息创建下一个下拉列表。令人惊讶的是,对于我的第一次尝试,一切都很好。当您运行最终查询时,问题就出现了,应该通过 ( $_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();
}

获取html.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>,我就是不知道那是什么。这是提交 php 中的一个片段,在您提交混乱的表单后运行<select>

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

哪个输出

Array
(
[ports] => 
)

我知道你看不出来,但是当我突出显示那一点时,那里有一个空白字符,我什至通过它isset()来查看它我是对的并且那里有一个字符。

这是使用 firebug 查看时创建的 html 的 xml 图像:

萤火虫

有人有想法么?这非常令人沮丧..显然,萤火虫图像显示它看起来不像它应该的样子......如果你们需要更多信息,请询问

如果值得一提,我正在使用 chrome。

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 回答