[英]Passing JavaScript variable to PHP through AJAX
我正在遵循http://www.w3schools.com/php/php_ajax_database.asp上的指南,并且了解了其工作原理。
我的代码:
<?php
include('./db.php');
$PM = mysqli_query($con, "SELECT DISTINCT PMName FROM report WHERE PMname <> '' ORDER BY PMName ASC");
?>
<select class="navbar-inverse" placeholder="PM Name" name="PMName"onchange="showUser(this.value)">
<?php
while ($row = mysqli_fetch_row($PM)) {
$selected = array_key_exists('PMName', $_POST) && $_POST['PMName'] == $row[0] ? ' selected' : '';
printf(" <option value='%s' %s>%s</option>\n", $row[0], $selected, $row[0]);
}
?>
</select>
<div id="txtHint"><b></b></div>
<script>
function showUser(str) {
if (str !==".PM") {
alert(str);
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
}
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
</script>
<?php
$q = intval($_GET['q']);
include('./db.php');
$sqlPM= "SELECT * FROM report WHERE PMName = '".$q."'";
$result = mysqli_query($con, $sqlPM);
?>
<table>
<?php
echo $q ;
?>
</table>
我在这里阅读了大约12篇文章,并试图理解一个事实,即大多数文章都使用$.post('getuser.php'
某种形式将变量发送到新的PHP页面,但是w3schools的示例确实在初始页面上,我的下拉列表正在我的数据库中填充,并且我选择的值正在传递到JavaScript函数中,我使用alert(str);
,但是从那里开始,似乎到达了第二个PHP页面,我尝试使用echo $q ;
来测试它是否通过,但是结果为空。
我在做错什么导致JavaScript函数捕获的变量没有传递到第二个PHP页面?
从我所看到的,我很好地按照教程上的说明进行操作。
$.post('getuser.php'
此语法是jQuery
JavaScript库所独有的。此外, $q
不是integer
,考虑到最初执行的数据库查询,它是一个string
,所以为什么要包装$_GET['q']
与intval()
吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.