用于AJAX调用的多个PHP查询在一个文件中

时间:2013-01-03 14:30:18

标签: php ajax

对于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 ,我该如何定位正确的查询?

5 个答案:

答案 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一样使用它。你可以实现它,例如:

  • 在ajax调用中,添加参数:data: { 'link': variable, 'query': query},
  • 在php页面中,读取参数:$action = $_POST['query']; switch($action){...}

答案 4 :(得分:1)

答案是肯定的,所有AJAX调用都是使用您提供的POST / GET变量加载文件,然后它返回输出。

因此,通过使用if语句,您可以将所有AJAX调用处理代码保存在同一个文件中;如果你愿意的话。