3

当谈到 AJAX 时,我是一个完全的菜鸟,只是想知道是否:

创建 ajax 调用时:

    $.ajax( {
    type: 'POST',
    url:'http://link.to.php/file.php', 
    data: { 'link': variable},
    })

我是否必须创建多个 PHP 文件,每个文件只有我想使用的单个查询,或者我可以在一个文件中编译它们吗?例如

**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一样拥有它,我该如何定位正确的查询?

4

5 回答 5

4

这完全取决于您打算进行的查询数量。这个文件越大,需要的处理就越多,管理起来就越困难。如果您确实使用单个文件,我会考虑使用 switch 语句。Switch 和 If 语句已经过基准测试,并且 Switch 语句比 If 更有效。

于 2013-01-03T14:42:24.827 回答
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);
}
于 2013-01-03T14:44:09.010 回答
1

AJAX 调用与页面调用没有什么不同。因此,您可以像传统方式一样将所有内容放在一个 .php 文件中;)

于 2013-01-03T14:36:22.347 回答
1

你可以像在File2.php. 例如,您可以像这样实现它:

  • 在ajax调用中,添加参数:data: { 'link': variable, 'query': query},
  • 在php页面中,读取参数:$action = $_POST['query']; switch($action){...}
于 2013-01-03T14:36:41.707 回答
1

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

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

于 2013-01-03T15:09:38.690 回答