1

私のjavascriptには$.getJSON({...})、さまざまなアクションに対するajaxリクエストがいくつかあります。これらの ajax リクエストを処理する php アプリがあります。実際のリクエストを処理する前に、アプリはまずセッションをチェックし、ユーザーがまだログインしていない場合は、更新信号を返します。何かのようなもの:

if (not logged in) {
header('Refresh: 0;');
}
else {
//process request
}

しかし、クライアントは実際には更新されません。AJAX リクエストと http リフレッシュ ヘッダーに関して、私が見逃しているものはありますか?

4

2 に答える 2

4

AJAX リクエストは、指示があるまでブラウザに影響を与えません。つまり、AJAXを使用してページをフェッチすると、それが返され、変数に格納される可能性があります。それだけです。それ以降は何もしません。返されたデータを解析し、それに応じて行動する必要があります。

あなたの場合、むしろ JSON のようなものを返し、クライアント側に返されたデータの意味を解析させ、それに応じて行動させることができます。

私は次のようなことをする傾向があります:

{
    "directives": {
        //contains directives what to do first before parsing the data
        "whatToDo" : "redirect" 
    },
    "payload" : {
        //actual page data
    }
}
于 2012-04-16T05:39:09.647 に答える
0

したがって、リクエストで呼び出したファイルには、header('Refresh: 0;'); が含まれています。? それはまったく効果がないため、ユーザーがログインしていない場合は、次のような一意の文字列を返します。

if (not logged in) {
    echo "NOTLOGGEDIN";
}
else {
    //process request
}

次に、AJAX リクエストで、ログインしているかどうかを確認します。

$.get("someURL", function(data) {
    if(data == "NOTLOGGEDIN"){
        //Do something
    } else{
        //Display data
    }
});
于 2012-04-16T05:41:26.830 に答える