一个函数页面上有多个 AJAX 函数


Multiple AJAX functions on one functions page

我想找到一种方法,在我的每个网页部分的根目录中都有一个页面来保存我正在调用的所有 databae 查询。

我正在使用一个小脚本.....

<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'";

您可以通过创建一个带有 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 文件时传递所需处理程序的索引,否则什么都不会发生。