选择下拉菜单选项后刷新页面加载更新后SQL查询结果的实现问题
我已在谷歌及StackOverflow平台搜索大量同类帖子,但未找到可落地的解决方案。我需要实现如下功能:页面首次进入时默认展示全部数据,在下拉菜单选择CustomerCountryCode后,页面自动刷新,同步更新SQL查询语句,仅展示与下拉选项匹配的表格数据。
History.php(当前WHERE条件写死为'DK',需要替换为$_POST['SelectedValue'])
if (isset($_POST['SelectedValue'])) { $sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE CampaignNo <> '' AND CustomerCountryCode like 'DK' ORDER BY ID DESC"; }else { $sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE CampaignNo <> '' ORDER BY ID DESC"; } $sqlFilter = "SELECT DISTINCT CustomerCountryCode FROM [CampaignModule].[dbo].[RetailCampaign]"; $params = array(); $options = array("Scrollable" => SQLSRV_CURSOR_KEYSET); $stmt = sqlsrv_query($conn, $sql, $params, $options); $stmt2 = sqlsrv_query($conn, $sqlColumns, $params, $options); $stmtFilter = sqlsrv_query($conn, $sqlFilter, $params, $options); echo '<select name="Filter" id="FilterSelect" class="form-control"> <option>Choose Country Filter</option>'; while ($row = sqlsrv_fetch_array($stmtFilter, SQLSRV_FETCH_NUMERIC)) { echo "<option value='$row[0]'>$row[0]</option>"; } echo '</select>';
HistoryControl.js - 我尝试编写POST请求提交选中值,在菜单更新后重载页面,也测试过其他多种实现逻辑
$(document).ready(function () { $("#FilterSelect").change(function () { var value = $("#FilterSelect").val(); $.ajax({ url: "../Model/History.php", type: "POST", data: { 'SelectedValue=': value }, success: function () { location.reload(); } }); }); });
欢迎提供各类优化方案及最佳实践指导,如需更多信息或代码可随时告知。
更新 - 最终解决方案
感谢@Lam Tran Duc 与 @Manashree Shah提供的思路与帮助
History.php
if (isset($_SESSION['SelectedValue'])) { $_POST['SelectedValue'] = $_SESSION['SelectedValue']; } if (isset($_POST['SelectedValue'])) { $_SESSION['SelectedValue'] = $_POST['SelectedValue']; $sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE CampaignNo <> '' AND CustomerCountryCode='" . $_POST["SelectedValue"] . "'"; } else { unset($_SESSION['SelectedValue']); $sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE CampaignNo <> '' ORDER BY ID DESC"; }
HistoryControl.js
$(document).ready(function () { $("#FilterSelect").change(function () { var value = $("#FilterSelect").val(); $.ajax({ url: "../Model/History.php", type: "POST", data: { SelectedValue: value }, // 移除键名末尾的'='符号 success: function (data) { //alert(data) location.reload(); } }); }); });
上述代码可正常运行,此前我遇到$_SESSION变量无法清除的问题,最终通过在historyPage.php中新增会话清除逻辑解决,代码如下:
<?php include "../Model/History.php"; session_unset(); ?>
内容的提问来源于stack exchange,提问作者Bjarke Skriver Villadsen
相关产品推荐
相关产品推荐

