发布使用ajax创建的变量的问题

时间:2013-01-30 18:30:56

标签: php javascript mysql xml ajax

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

firebug

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

如果值得注意,我使用chrome。

2 个答案:

答案 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行。