这是一个艰难的.. 我第一次尝试使用 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。