php - 闻起来像 AJAX 但我不确定

标签 php mysql ajax filter

修改:

大家好,感谢您的回复。我一直在努力尝试将代码硬塞到我的页面中,但我仍然没有运气。在摆弄时,我不明白为什么像下面的代码这样的东西不起作用 - 我无法让它工作,请注意(!)。如果不可能,我希望有人可以否决这个想法,以免我浪费时间尝试这样做:

<form name='Names' role='form' action='#' method='get' onchange='this.form.submit()'>
    <select name="FirstName">
        <option value="1">FirstName#1</option>
    </select>
    <select name="LastName">
        <option value="1">LastName#1</option>
    </select>
</form>

...然后我可以在 $_GET['FirstName']$_GET['LastName'] 中选取这些选择并将它们传递到我的 mysqli_query( )来生成表格?

<小时/>

为了防止我的困惑蔓延,我首先想描述一下我正在尝试做的事情...我想要一个网页,其中有一个表格,其中包含一组我可以过滤的下拉列表 - 类似于 Excel 过滤器。如果您知道比我下面尝试的更好的方法 - 请启发我!!

现在,描述一下我迄今为止取得的最佳进展:

我有以下脚本(直接从 W3schools 复制过来:

<script>
    function showUser(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","entry_table.php?q="+str,true);
      xmlhttp.send();
    }
</script>

上面的脚本是从下面的下拉列表中调用的,该下拉列表使用来自 SQL 查询的 PHP while 循环进行填充:

<form>
    <select name="Name" onchange="showUser(this.value)">
        <option value="1">User#1</option>
    </select>
</form>

使用以下命令生成 SQL 查询后,$q 值将传递到 PHP 页面以显示表:

WHERE UserID="$q"

这可行,但我担心这似乎是一种冗长的做法 - 特别是如果我尝试扩展查询以包含 6-7 个其他下拉过滤器。

提前致谢, 本

最佳答案

您可以使用回调函数。

function getData(url, callback)
{
    if (window.XMLHttpRequest) 
    {
        //IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } 
    else 
    { //IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function() 
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        {
            callback(xmlhttp.responseText);
        }
    }

    xmlhttp.open("GET", url, true);
    xmlhttp.send(); 
}

然后像这样进行 ajax 调用:

getData("entry_table.php?q="+str, function(data)
{
    document.getElementById("txtHint").innerHTML=data;
});

外部函数

function doStuff(value) {
    getData("entry_table.php?q="+value, function(data)
    {
        document.getElementById("txtHint").innerHTML=data;
    });
}

然后选择将是

<select onchange="doStuff(this.value)">

关于php - 闻起来像 AJAX 但我不确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26711788/

相关文章:

php - 将项目 ID 存储到 HTML 中

mysql - 获取每种类型的总uid

mysql - 2个外键在MySQL中引用同一个主键

mysql - 如何在不使用 group by 语句的情况下选择不同的行

javascript - 为什么点击 href ="#"页面会向上滚动?

php - 将链函数作为参数传递给 php 中的参数

php - 获取其中包含斜杠的对象属性

php - Laravel 模型相关日志

php - Wordpress 中的 Ajax 请求无法执行我的自定义函数

javascript - PHP、AJAX 和 Mysql