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

时间:2016-02-26 19:51:36

标签: javascript php 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端分成几个部分,但没有运气。

2 个答案:

答案 0 :(得分:1)

你可以通过创建一个带有switch语句的php文件来控制在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文件时传递所需处理程序的索引,否则不会发生任何事情。

答案 1 :(得分:1)

您需要将<?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'";