这是一个艰难的...我试图第一次使用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();
}
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()
来看它我是对的,那里有一个角色。 / p>
这是使用firebug查看时xml创建的html的图像:
有人有什么想法吗?这是非常令人沮丧的..显然,萤火虫图像显示它看起来不应该...如果你们需要更多的信息,请询问
如果值得注意,我使用chrome。
答案 0 :(得分:1)
您没有发布您的ajax请求。
xmlhttp.open("GET","gethtml.php?q="+str,true);
你是通过get发送的。在php中,请尝试print_r($_GET)
而不是$_POST
并检查您是否看到正确的值。
答案 1 :(得分:-1)
foreach($conn->query($sql) as $row) {
echo $row['Model'];
echo '<option value="'.$row['Model'].'">'.$row['Model'].'</option>';
$i++;
}
请看上面第2行。