php - 如何使用 AJAX 执行具有多个选择选项的查询?

标签 php jquery mysql ajax

我希望我的 PHP 查询能够动态更新显示的数据,而无需刷新。

我有这两个选择选项。

<select name="d">
<option <?php if ( $d == '50' ) { echo 'value="50" selected="selected" >50 km '; } else { echo 'value="50" >50 km '; } ?></option>
<option <?php if ( $d == '100' ) { echo 'value="100" selected="selected" >100 km '; } else { echo 'value="100" >100 km '; } ?></option>
</select>

<select name="o">
<option <?php if ( $o == '1' ) { echo 'value="1" selected="selected" >from nearest to furthest '; } 
else { echo 'value="1" >from nearest to furthest '; } ?>
</option>
<option <?php if ( $o == '2' ) { echo 'value="2" selected="selected" >from furthest to nearest '; } 
else { echo 'value="2" >from furthest to nearest '; } ?>
</option>
</select>

这是包含 3 个变量 a(来自文本输入)、do 的 PHP 部分。

$a = isset($_GET['a']) ? $_GET['a'] : '';
$d = isset($_GET['d']) ? $_GET['d'] : ''; 
$o = isset($_GET['o']) ? $_GET['o'] : '';

if ( !empty($_GET['a']) )
{

$request = mysqli_query($sql,"
SELECT * 
FROM adresses 
WHERE adress = '".$a."' HAVING distance <= ".$d." order by ".$o."");            

}

这是最终结果:

echo '<div id="result">';

while ( $row = mysqli_fetch_array($request) )

{

echo '<p>'.$row['shop'].' | '.$row['adress'].' | '.echo $row['town'].'</p>';

}

echo '</div>';

我以前从未使用过 AJAX,我想知道如何运行上面这样的查询。

这是我对 AJAX 部分的尝试(不确定语法):

<script src="jquery-1.9.1.min.js"></script>
<script type="text/javascript">
   $(document).ready(function(){
     $("#result").change(function(){
      var a = $(this).val();
      var d = $(this).val();
      var o = $(this).val();

     $.ajax({
        type: "GET",
        url: "test.php",
        data: { a: $a, d: $d, o: $o } ,
        success: function(result){
        $("#result").html(result);
        }
      });
    });
  });
</script>

请问您能告诉我应该在 test.php 文件中放入什么吗?

最佳答案

在 test.php 中,您应该从服务器(即 MySQL)收集数据。

    $a = isset($_GET['a']) ? $_GET['a'] : '';
    $d = isset($_GET['d']) ? $_GET['d'] : ''; 
    $o = isset($_GET['o']) ? $_GET['o'] : '';

    if ( !empty($_GET['a']) )
    {

    $request = mysqli_query($sql,"
    SELECT * 
    FROM adresses 
    WHERE adress = '".$a."' HAVING distance <= ".$d." order by ".$o."");            

    }

echo '<div id="result">';

while ( $row = mysqli_fetch_array($request) )

{

echo '<p>'.$row['shop'].' | '.$row['adress'].' | '.echo $row['town'].'</p>';

}

echo '</div>';

无论 php 脚本返回什么(在上面的情况下回显),它都将在您的结果变量中:

success: function(result){
$("#result").html(result);
}

还有一些事情。

您定义的变量不正确,应该是:

  var a = $('#a').val();
  var d = $('#d').val();
  var o = $('#o').val();

为此,您需要将 id 分配给您的选择

<select name="d" id="d">

JS 变量没有 $ 符号,因此您发送到 test.php 的变量应该是:

data: { a: a, d: d, o: o } 

注意:以上都没有经过测试,只需复制/粘贴您的代码即可让您走上正确的轨道。

关于php - 如何使用 AJAX 执行具有多个选择选项的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46776811/

相关文章:

php - html提交按钮不起作用

php - 具有不同结果的多个 file_get_contents

javascript - 如何使用 PHP CodeIgniter、JQuery、AJAX 检查数据库中是否已存在 ID 验证

javascript - Javascript 中的 Mysql 日期时间不同

mysql - 计数某个时间段前后存在的值

php - 在 Android 上保留登录 session

php - php 中的 Curl-request > 带参数的 URL?

javascript - 如何通过类选择器获取宽度属性?

javascript - 使用JQuery实时大写用户输入的第一个字符

c# - Datagridview 单元格值变化更新数据库