【问题标题】:PHP/Ajax - Multiple GET ParametersPHP/Ajax - 多个 GET 参数
【发布时间】:2016-09-19 19:33:27
【问题描述】:

基本上我有一系列用于过滤数据表的按钮。

我的前两个按钮可以正常工作:

<button onclick="filter('open');" class="open">Open</button>
<button onclick="filter('closed');"class="closed">Closed</button>

函数如下所示:

function filter(st, location) {
        if(st == "") {
            document.getElementById("exams").innerHTML = "";
            return;
        } else {
            if(window.XMLHttpRequest) {
                var xmlhttp = new XMLHttpRequest();
            } else {
                var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    document.getElementById("exams").innerHTML = xmlhttp.responseText;
                }
            };
            xmlhttp.open("GET", "ajax.php?st="+st+"&location="+location, true);
}}

在 ajax.php 文件中,我正在检查 st 参数以设置我在查询中使用的变量:

if (isset($_GET["st"])) {
    $status = $_GET["st"];
} else {
    $status = null;
}

$query = "SELECT examID, `status`, site, first_name, last_name, exam_name, institution FROM exams WHERE status = '{$status}'";

现在我想根据另一个按钮单击传递另一个参数以进一步过滤数据。我不确定要为参数添加什么才能使其正常工作。

<button onclick="filter();" class="new-york">New York</button>

【问题讨论】:

  • 你想在哪里传递另一个参数?
  • 如果我有另一个按钮,如 我想将位置 New York 传递给第二个 filter() 函数参数“location”
  • 如果您的函数被声明为使用 2 个参数,请不要只传递一个...创建第二个接收位置作为参数的函数。

标签: javascript php mysql ajax filtering


【解决方案1】:

我想如果我要做这样的事情,我可能会考虑使用data 属性。通过这种方式,您可以传递多个属性以及操作值。那里有一些可扩展性:

<button class="mybutton" data-instructions='{"action":"open","param1":"something","param2":"something else"}'>Open</button>

在 ajax 上,将数据对象作为$_POST(或$_GET)发送,然后您就可以相对轻松地在 PHP 端获取它。如果您这样做,您只需执行一个触发mybutton 类的操作。您可以在其中编写一些自动化程序。

另一种方法可能是使用innerHTML 从被点击的元素中获取内容,然后将其正常传递给php。

旁注,正如您所拥有的,您的 sql 可以注入。

【讨论】:

  • 感谢您对此的选择。今天我意识到我试图做的事情并没有真正的意义。我决定做的只是创建单选按钮并将它们设置为按钮。这样我就可以有一个提交按钮,并通过 PHP 将其作为正常的发布请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
相关资源
最近更新 更多