两个Post请求,并且不更改变量
Two Post requests, and not changing variables
好的,基本上这是我的页面:当页面加载时,它会向我的php文件发送一个Ajax Post请求,并发送两个变量——ida=yes和xquery=dropdown。代码在这里:
function ddmenu() {
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "dex.php";
var params = "xquery=dropdown&ida=yes";
xmlhttp.open("POST", url, true);
//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.onreadystatechange = function() {
//Call a function when the state changes.
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("dropdown").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.send(params);
}
这个Ajax请求激活了这个PHP,它是100%正确工作的。
$xquery = $_POST['xquery'];
// If $xquery is a dropdown.
if ($xquery = "dropdown") {
$dd = "SELECT * FROM tablename";
$ddq = mysql_query($dd) or die('Error: '.mysql_error ());
echo 'Choose your Pokemon: <select id="tableid" onchange="tableloader()">';
while ($row = mysql_fetch_array($ddq)) {
echo '<option value="'.$row['pokemon_name'].'">'.$row['natdex'].'-'.$row['pokemon_name'].'</option>';
}
echo "</select>".$xquery;
}
此处生成的选择列表在其值更改时使用下一个函数。页面上的另一个选择列表也使用此功能。
现在,我还有第二个函数,当下拉列表的值发生更改时,它会运行。现在,这个函数还发送一个Ajax Post请求,以及xquery和ida变量。我的问题是,当我在php页面上回显xquery变量时,它仍然将xquery设置为下拉列表。当它应该以表格的形式出现时。正如代码基本上说的那样:
function tableloader(str) {
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "dex.php";
var var1 = document.getElementById("gendrop").value;
var var2 = document.getElementById("tableid").value;
var params = "xquery=tables&ida=yes&var1="+var1+"&var2="+var2;
xmlhttp.open("POST", url, true);
//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.onreadystatechange = function() {
//Call a function when the state changes.
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("searchdisplay").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.send(params);
}
现在,这个函数从第一个函数中生成的下拉值中获取值,并使用下拉列表中的下拉值:
<select id="gendrop" onchange="tableloader(this.value)">
<option value="all">All</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">2</option>
<option value="4">4</option>
<option value="4">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
</select>
最后,我的问题是,为什么我不能获得我的两个下拉菜单的值,为什么它不更改我的xquery变量,而是将相同的东西输出到我的php文件,即使它是不同的ajaz请求。
听起来您可能有冲突的变量。您应该在每个函数的顶部单独声明var xmlhttp
。请参阅上一篇文章:
如何阻止XMLHTTP相互冲突?
我花了很多时间才弄明白。作为PHP挑剔的习惯之一,我需要==我的if语句,而不仅仅是=。谢谢大家。
相关文章:
- IF 语句不改变变量的结果
- 为什么不是'这个CanvasJS脚本动态地改变变量
- 在php中改变变量,但在javascript中相同的变量不变
- 为什么Javascript不使用onChange来改变变量?
- 添加一个DOM/SVG元素与d3 javascript库改变变量引用/范围,为什么
- 通过点击按钮改变变量的值
- 在按下键后改变变量
- JQuery改变变量/成本后点击
- Eventlistener点击不改变变量时按下
- 改变变量中的链接
- 不能让函数改变变量
- Javascript滑块动态改变变量
- 通过html按钮改变变量
- Jquery在点击时改变变量
- 不能改变变量
- 为什么我的精灵在不改变变量的情况下加速
- 在javascript的文字函数中改变变量的值
- jQuery用子元素改变变量
- 改变变量&设置日期反应原生
- Ajax文件检查成功后不改变变量