一个功能页面上的多个AJAX功能

问题描述:

我想找到一种方法,在每个Web部分的根目录中放置一个页面,以容纳我打电话给的所有数据库查询。一个功能页面上的多个AJAX功能

我使用了一个小脚本.....

<script type="text/javascript"> 
    $(function() { 
    var availableTags = <?php include('fn-search-em.php'); ?>; 
    $("#quick-add").autocomplete({ 
     source: availableTags, 
      autoFocus:true 
    }); 
    }); 
</script> 

....做到这一点显示为用户键入搜索SQL。与此类似....

$sql = "SELECT * FROM stock_c_colours WHERE current_c_status = 'current' AND deleted = 'no'"; 
$result = mysqli_query($conn, $sql); 

$results_list = array(); 
while($row = mysqli_fetch_array($result)) 
{ 
    $colour_id = $row['id']; 
    $range_name = $row['range_name']; 
    $range_colour = $row['colour']; 
    $colour_code = $row['code']; 
    $p1 = $row['piece_size_1']; 
    $p2 = $row['piece_size_2']; 

    if($p1 > 1){ 
     $p_mark = 'x'; 
    } 
    else { 
     $p_mark = ''; 
    } 

    $results_list[] = $range_name.' ('.$range_colour.' '.$colour_code.' '.$p1.$p_mark.$p2.') ID:'.$colour_id; 
} 
echo json_encode($results_list); 

回声在一个JSON阵列回文本框,瞧,一个列表的形式列出。然而,我目前正在使用的网站有大约20个搜索框,这些搜索框分散在各处(用户请求),这是否意味着我必须有20个单独的php功能页面,每个页面都有自己的查询,或者可以单页面被使用?

我怀疑java需要修改一点点以在多个查询的页面上调用特定的函数,但是我对Java不太好,所以一些帮助将不胜感激。

我最初尝试在Java脚本中添加?action =到PHP地址的末尾,希望另一端的GET能够将PHP结尾分成几部分,但没有运气。

您需要将<?php include('fn-search-em.php'); ?>;更改为<?php $action = 'mode1'; include('fn-search-em.php'); ?>;

然后在您的fn-search-em.php文件中,使用$action变量来确定您创建的是哪种MySQL查询。

例如:

if ($action == 'mode1') 
    $sql = "SELECT * FROM stock_c_colours WHERE current_c_status = 'current' AND deleted = 'no'"; 
else 
    $sql = "SELECT * FROM stock_c_colours WHERE current_c_status = 'mode1' AND deleted = 'no'"; 
+0

谢谢。由于纯粹的简单性和对当前代码的最小修改,选择此答案。我真的需要加快一些基本的Java :( – Stephen

+0

这可能是一个非常愚蠢的问题,但我会更好(因为他们只是微小的SQL查询,只是把整个查询放入availableTags变量?然后,我可以一起删除sep PHP页面,只需按需要编写查询即可。 – Stephen

+0

Hey Stephen,您绝对不希望将SQL查询直接包含到您的JavaScript代码中,因为这会打开您的代码任何执行任何SQL查询的人都可以在没有您的授权的情况下执行任务。您必须确保您的SQL查询得到了服务器端的生成,并且任何字符串值都会被接受并包含到您的SQL查询中(通过JavaScript从客户端获得)使用PHP中的[mysql_real_escape_string](http://php.net/manual/en/function.mysql-real-escape-string.php)函数。 – Steven

你可以通过创建一个PHP文件与switch语句来控制什么是你的Ajax调用期间执行的代码做到这一点:

JS:

$.ajax({url: 'ajax.php', method: 'POST', async:true, data: 'ari=1&'+formData,complete: function(xhr){ var availableTags = JSON.parse(xhr.responseText);}}); 

PHP:

<?php 
    switch($_REQUEST['ari']){ 
     case 1: 
      $sql = "SELECT * FROM stock_c_colours WHERE current_c_status = 'current' AND deleted = 'no'"; 
      $result = mysqli_query($conn, $sql); 

      $results_list = array(); 
      while($row = mysqli_fetch_array($result)){ 
      $colour_id = $row['id']; 
      $range_name = $row['range_name']; 
      $range_colour = $row['colour']; 
      $colour_code = $row['code']; 
      $p1 = $row['piece_size_1']; 
      $p2 = $row['piece_size_2']; 

      if($p1 > 1){$p_mark = 'x';} 
      else { $p_mark = ''; } 
      $results_list[] = $range_name.' ('.$range_colour.' '.$colour_code.' '.$p1.$p_mark.$p2.') ID:'.$colour_id; 
      } 
      echo json_encode($results_list); 
     break; 
     case 2: 
      // another SQL Query can go here and will only get run if ARI == 2 
     break; 
    } 
?> 

这允许您将多个AJAX处理程序保存在同一个文件中,只需在您调用PHP文件时传递所需处理程序的索引或不发生任何事情。