一个功能页面上的多个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'";
答
你可以通过创建一个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文件时传递所需处理程序的索引或不发生任何事情。
谢谢。由于纯粹的简单性和对当前代码的最小修改,选择此答案。我真的需要加快一些基本的Java :( – Stephen
这可能是一个非常愚蠢的问题,但我会更好(因为他们只是微小的SQL查询,只是把整个查询放入availableTags变量?然后,我可以一起删除sep PHP页面,只需按需要编写查询即可。 – Stephen
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