0

だから私はオンラインで掘り下げていて、jQueryAJAXソリューションが私がやりたいことに最適であることがわかりました。

jquery.ajax()とjquery.post()が最も言及されていることがわかりました。

しかし、私が見つけた情報は非常に包括的であり、正直なところ、私は少し迷っています!

トグルスイッチとして機能する簡単なボタンを作成する必要があります。データを処理してtrueまたはfalseを返すPHPスクリプトにデータをPOSTする必要があります。ボタンは設定されているか、それに応じて設定解除されている必要があります。

これが問題です。結果は、trueまたはfalseを返すデータベースルックアップにも依存します。$_SESSIONから安全に情報を取得する必要があります。javascriptはクライアント側であるため、ユーザーがアクセスできるものにこのデータを出力することに熱心ではありません。私の質問は、「呼び出された」PHPファイル内からセッションにアクセスできますか?それでも正しく機能します(インクルードのように)。

これが私が見つけた最高の基本コードですが、安全ではなく、正しくない可能性があります。

$("#mydiv").click(function(){

var button = $(this) ;

if (!button.hasClass('active')) {
    $.post("ajax.php", { user: "2", action: "start" },
        function(data){
           button.addClass('active');
           button.html("End") ;
        }
    );

}
else {
    $.post("ajax.php", { user: "2", action: "stop" },
        function(data){
           button.removeClass('active');
           button.html("Start") ;
        }
    );
}


});
4

3 に答える 3

1

セッション変数は、呼び出すphpスクリプトで使用できます。$.post()-functionは非同期であり、コールバックパラメータ(この場合は。)があることに注意してくださいdata。このコールバック変数は、によって呼び出されたphpスクリプトにエコーしたものをすべて保存します$.post()

これで、何かを検証して好きなことを行うことができます(ところで、セキュリティ上の理由から、検証は常にjavascriptではなくphpファイルで行う必要があります!)。

1つのアイデアは、検証後にphpファイルにエコーアウトする"true""false"、次のようにphpスクリプトを終了することです。

<?php
    //validate here and store success in boolean $success
    if($success==true){ echo "true"; exit; }
    else{ echo "false"; exit; }
?>

次に、javascriptコールバックパラメーターdataの値はまたはのいずれ"true"かになり"false"ます。この変数には、JavaScriptの他の変数と同じように簡単にアクセスでき、その値に応じて処理を実行できます。

1つの解決策は次のとおりです。

$("#mydiv").click(function(){

    var button = $(this) ;

    if (!button.hasClass('active')) {
        $.post("ajax.php", { user: "2", action: "start" },
            function(data){
                if(data=="true"){
                    button.addClass('active');
                    button.html("End");
                }
            }
        );
    }
    else {
        $.post("ajax.php", { user: "2", action: "stop" },
           function(data){
                if(data=="true"){
                    button.removeClass('active');
                    button.html("Start");
                }
           }
        );
    }


});

それでうまくいくはずです。属性を持つオブジェクトなど、複数のデータポイントを返す必要がある場合は、JSONを確認してください。

于 2012-09-11T23:58:08.103 に答える
1

呼び出されたphpスクリプト内から安全に$_SESSIONにアクセスできます。

phpスクリプトでは、trueまたはfalseを出力していると思います。この場合、コールバック関数にifステートメントを追加することをお勧めします。データには、phpスクリプトの戻り値が含まれています。

于 2012-09-11T23:17:44.907 に答える
0

PHPスクリプトの答えが成功/エラーである場合は、HTTPヘッダーを使用してこれを示すことを検討してください。

失敗した場合、レンダリング:

header( "HTTP / 1.0 406 Not Acceptable");

これにより、成功とエラーのハンドラーを作成できるため、jqueryでの作業が楽になります。

セッションに関しては、それは検索で機能するはずです。ブラウザはAJAXリクエストを行うときにセッションCookieを渡し、PHPはセッションを正しくロードします。

上記のコードは、次のように変更できます。

$.ajax({
  url: 'http://blarg.com',
  data: { your post data },
  success: function(data) {  do something },
  error: function(o,textStatus) { do Error }
});

詳細については、APIを確認してください:http://api.jquery.com/jQuery.ajax/

于 2012-09-11T23:20:55.493 に答える