它闻起来像AJAX,但我不确定

时间:2014-11-03 10:01:17

标签: 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>

然后将$ q值传递给PHP页面,以便在生成SQL查询后显示表:

WHERE UserID="$q"

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

提前致谢, 本

1 个答案:

答案 0 :(得分:0)

您可以改为使用回调函数。

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