私はよく調べて遊んできましたが、私は困惑しています。基本的に私は自分のサイトをセットアップして、ユーザーが「ログイン」しているかどうかを検出し、それによって見た目を変えることができるようにします。「サインイン」リンクを削除し、「サインアウト」リンクなどで置き換えます。テスト目的のために
は、私は私のindex.htmlページを開始しました:次
<?php
session_start();
$_SESSION["username"]="javaman";
?>
、私はjqueryのdocument.readyの中から私のsetup関数を呼び出します。
$(document).ready(function() {
setup_page();
};
セットアップ機能がどのように見えます次のようになります。
function get_user()
{
var result;
$.post("./session.php", {action : "get", key : "username", value : "val"}, function(data){
result = data;
});
return result;
}
session.phpは、3つのポスト値をとり、うまくいけば適切な結果を吐くという単純なアプリケーションです。私が実行している問題は、js結果変数がしばしば未定義であることです。 IEの開発ツールバー。 FFでもOKです。私は正しい方法でコールバックを使用していますか?私はalert()関数をどこにでも置いてみたところ、コードがどこにあるのか解明しようとしましたが、警告が結果が定義されていないとしばしば助けになりません。その間、get_userがpost関数を呼び出すようですが、スタックはすぐに戻り、get_userが..の値を返した後までreturn文に到達しません。ここでコードの流れを誤解していると思います。私は論理的に1つの関数が別の関数をたどるCに慣れています。その中で私はコールバックを本質的に以下のように解釈しています:
int i = callback_function(post( "some data"));
私の考えでは、投稿はアクションを完了してから別の関数を呼び出すか、少なくとも別のアクションを実行してから完了すると、get_userはその値を返すことができます。
操作の順序は:post、get_user、コールバック?シアトル
に混乱 ...
セキュリティで保護されていないjs al allを使用しないで、セッションをphpでチェックし、適切にページを構築します。 –