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

时间:2017-10-16 18:27:31

标签: 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文件中添加什么内容吗?

1 个答案:

答案 0 :(得分:0)

在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 } 

注意:以上所有内容均未经过测试,只需复制/粘贴您的代码即可让您走上正轨。