3

私が開発しているウェブサイトは、次のように構成されています。

設定時にホームページコンテンツのモジュールを切り替える機能があります$_GET['module']。例:

function switchmodules()
{
    $module=$_GET['module'];
    switch($module)
    {
        case 'getnews': news(); break;
        default: def();
    }
}

ご覧のとおり、このスイッチはモジュールごとに別の関数を呼び出します。

たとえば、私はgetNews()このように動作するように書きました:

function getNews()
{
   $id=$_GET['id'];
   if(!id)
   {
       //CODE TO LIST ALL NEWS
   }
   if(isset($id))
   {
       //CODE TO GET ONLY 1 NEWS BY ID
   }

}

ご覧のとおり、モジュールごとに一意のファイルを使用していません。モジュールのすべての操作は、アクションを再度切り替えて結果を変更する独自の機能の一部です。

データベースからニュースを取得したい場合は、次のような URL を使用する必要があります。?index.php&module=getnews&id=1

私の質問は次のとおりです
。jQuery と$.ajax()メソッドを使用して、get によって切り替えられる関数に基づいて、この構造を使用して (たとえば) ニュースを取得する方法はありますか? それとも、すべてを変更して、関数ごとにファイルを作成する必要がありますか?

4

3 に答える 3

1

$.ajax() を介して同じ URL を呼び出すだけです。axjax 呼び出しで変更する必要がある唯一のことは、レイアウトを出力せず、ニュース自体のみを出力することです。

PHPでは、次のようなajaxリクエストを確認できます

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

    // dont output layout
}
于 2012-04-14T20:04:09.203 に答える
1

このコードが「test.php」にある場合、次のことができます。

<script>
    $.get(
        '/test.php',
        {
            module: 'news',
            id: 1
        },
        function( data ) {
            alert( data );
        }
    );
</script>

そして、js は必要なパラメーターを指定して GET リクエストを test.php に送信します。次に、サーバー スクリプトがリクエストの処理方法を決定します。

于 2012-04-14T20:07:41.637 に答える
0

jQuery

$(document).ready( function() {
    var form = '#my_awesome_form';

    $(form + ' input[type=submit]').click(function(e) {
        e.preventDefault();

        $.ajax({
            type: "GET",
            url: 'index.php',
            data: $(form).serialize(),
            success: function( response ) {
                alert('DONE!');
            }
        });
    });
});

HTML

<form id="my_awesome_form" // OTHERS PROPERTIES //>
    // LOT OF FIELDS HERE //
    <input type="submit" value="Send">
</form>
于 2012-04-14T20:12:35.923 に答える