javascript - 通过 AJAX 将 JavaScript 变量传递给 PHP

标签 javascript php jquery ajax

我正在遵循 http://www.w3schools.com/php/php_ajax_database.asp 的指南,我了解了其工作原理的基本概念。

我的代码:

PHP:

<?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>

JavaScript:

<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>

和 getuser.php 页面:

<?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 不是考虑到您最初执行的数据库查询,它是一个整数,它是一个字符串,那么为什么要使用包装$_GET['q'] >intval()

关于javascript - 通过 AJAX 将 JavaScript 变量传递给 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26535825/

相关文章:

javascript - 在 JavaScript 中为新添加的元素添加 onclick 事件

php - mysql对2个group by上的同一列求和

javascript - Python/Flask 中基于时间的 Jinja 元素自动重新加载,无需刷新页面

javascript - 从 jQuery AJAX 结果设置函数变量

javascript - 将详细信息按钮添加到动态 HTML 列表

javascript - 这些原型(prototype)声明有什么区别?

javascript - 在没有 jquery 的情况下将文本添加到模糊的 textarea 值

php - 如何处理来自 Swift (iOS) 应用程序的 PHP 传入 JSON?

jquery - 设置yearRange后: '-90:-15' Jquery Datepicker picking current Year(initially) why?

javascript - 可以在鼠标左键单击时触发 context.js 上下文菜单