对于AJAX,我是一个完整的菜鸟,只是想知道是否:
创建ajax调用时:
$.ajax( {
type: 'POST',
url:'http://link.to.php/file.php',
data: { 'link': variable},
})
我是否必须创建多个PHP文件,每个文件只有我想要使用的单数查询,或者我可以在一个文件中一起编译它们吗? e.g。
**File1.php
//containing a singular query**
<?php
include ('connection.php');
if(isSet($_POST['link'])){
$curUrl=$_POST['link'];
$curUrl=mysql_real_escape_string($curUrl);
$nextSet = "SELECT * FROM shortlink_analytics WHERE shortlink = '$curUrl' ORDER BY hitTime ASC";
$array = array();
$query = mysql_query($nextSet);
while($row = mysql_fetch_array($query)){
$array[] = '<tr><td>'.$row['hitTime'].'</td></tr>';
}
echo json_encode ($array);
}
?>
或者我可以像下面那样拥有它们:
File2.php
//containing multiple querys
<?php
include ('connection.php');
if(isSet($_POST['link'])){
$curUrl=$_POST['link'];
$curUrl=mysql_real_escape_string($curUrl);
$nextSet = "SELECT * FROM shortlink_analytics WHERE shortlink = '$curUrl' ORDER BY hitTime ASC";
$array = array();
$query = mysql_query($nextSet);
while($row = mysql_fetch_array($query)){
$array[] = '<tr><td>'.$row['hitTime'].'</td></tr>';
}
echo json_encode ($array);
}
if(isSet($_POST['link2'])){
$curUrl2=$_POST['link2'];
$curUrl=mysql_real_escape_string($curUrl2);
$nextSet = "SELECT * FROM shortlink_analytics WHERE shortlink = '$curUr2l' ORDER BY hitTime ASC";
$array2 = array();
$query = mysql_query($nextSet);
while($row = mysql_fetch_array($query)){
$array[] = '<tr><td>'.$row['hitTime2'].'</td></tr>';
}
echo json_encode ($array2);
}
?>
如果我可以使用 File2.php ,我该如何定位正确的查询?
答案 0 :(得分:4)
这一切都取决于您打算拥有的查询数量。此文件越大,所需的处理越多,管理起来就越困难。如果您使用单个文件,我会考虑使用switch语句。 Switch和If语句已经过基准测试,Switch语句比If语句更有效。
答案 1 :(得分:3)
您可以在从AJAX调用的PHP文件中运行任意数量的查询。
但请记住,如果要返回JSON数据,则需要立即返回所有内容。因此,只需累积所有输出数据,然后立即推送所有内容(代码已被删除):
if(isSet($_POST['link'])){
$array1 = array();
while($row = mysql_fetch_array($query)){
$array1[] = '<tr><td>'.$row['hitTime'].'</td></tr>';
}
}
if(isSet($_POST['link2'])){
$array2 = array();
while($row = mysql_fetch_array($query)){
$array2[] = '<tr><td>'.$row['hitTime'].'</td></tr>';
}
}
$return = array();
if(isset($array1)){
$return['array1'] = $array1;
}
if(isset($array2)){
$return['array2'] = $array2;
}
echo json_encode($return);
当您将javascript作为对象返回时,这将允许您更清洁地提供您的信息:
success:function(data){
console.log(data.array1);
console.log(data.array2);
}
答案 2 :(得分:1)
AJAX调用与页面调用没有区别。所以你可以把一切都放在一个.php文件中,就像你用传统方式做的那样;)
答案 3 :(得分:1)
您可以像File2.php
一样使用它。你可以实现它,例如:
data: { 'link': variable, 'query': query},
$action = $_POST['query']; switch($action){...}
答案 4 :(得分:1)
答案是肯定的,所有AJAX调用都是使用您提供的POST / GET变量加载文件,然后它返回输出。
因此,通过使用if语句,您可以将所有AJAX调用处理代码保存在同一个文件中;如果你愿意的话。