您总是可以编写一些代码来根据传递的参数生成 SQL 查询。
除了您的基本城市和从用户选择的日期之外,您的 ajax 还可以使用一堆参数查询页面。如果您的页面保留了之前选择的搜索选项,它应该能够让用户添加更多选项并继续以相同的方式处理它们。然后,您的 php 将测试是否在 $_POST 或 $_GET 变量中设置了参数($_POST 通常对于 ajax 更安全,但为了简单起见,我的示例将使用 $_GET)并构建这样的查询。
例子:
Javascript 生成一个查询,如searchAjaxHandler.php?city=Chicago&from=2012-03-01&to=2012-03-05&someColumnLowerRange=500&someColumnUpperRange=700
然后您的 php 脚本按如下方式处理:
$query = "SELECT * FROM Data WHERE City=? AND Date > ? AND Date < ?";
$arguments = array($_GET['city'], $_GET['from'], $_GET['to']);
if (isset($_GET['someColumnLowerRange'])) {
$query .= " AND someColumn > ?";
$arguments[] = $_GET['someColumnLowerRange'];
}
if (isset($_GET['someColumnUpperRange'])) {
$query .= " AND someColumn < ?";
$arguments[] = $_GET['someColumnUpperRange'];
}
//execute the query
//using PDOs (google them...they are a good way to prevent sql injection and
//support multiple database types without modifying code too much), create a
//statement with the above query in put the statement in $statement
$statement->execute($arguments); //this uses the $arguments array to fill in the prepared statement's ?'s
//then do the stuff to get the retrieved rows out of the result returned
毕竟,javascript 端将通过将所有先前的结果替换为您返回的结果来完成与您之前所做的相同的事情。