3

私は AJAX に関しては完全な初心者であり、次のことを考えていました。

ajax 呼び出しを作成する場合:

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

複数の PHP ファイルを作成し、それぞれに使用したい単一のクエリのみを作成する必要がありますか?それとも、それらをすべて 1 つのファイルにまとめてコンパイルできますか? 例えば

**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 呼び出しは、指定した POST / GET 変数を含むファイルをロードするだけで、出力が返されます。

そのため、if ステートメントを使用すると、すべての AJAX 呼び出し処理コードを同じファイルに保持できます。ご希望の場合。

于 2013-01-03T15:09:38.690 に答える