2012-04-16 4 views
1

私のjavascriptでは、いくつかのAjaxリクエストがあります。$.getJSON({...})さまざまなアクションがあります。私は、これらのajaxリクエストを処理するPHPアプリケーションを持っています。実際のリクエストを処理する前に、私のアプリはまずセッションをチェックし、まだログインしていない場合は、リフレッシュ信号を返します。ような何か:
ブラウザは、Ajaxレスポンスからのヘッダリフレッシュを無視しています。

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

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

答えて

4

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

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

私のような何かをする傾向がある。だから、あなたの要求内のファイル、あなたの呼び出しは、ヘッダー(「更新:0;」)が含まれ

{ 
    "directives": { 
     //contains directives what to do first before parsing the data 
     "whatToDo" : "redirect" 
    }, 
    "payload" : { 
     //actual page data 
    } 
} 
+0

これは完全にそうではありません。それ以上のクライアント処理を必要とせずにajaxリクエストによって開始された場合、例えば、ダウンロードが即座に実行されます。ヘッダーは、クライアントの動作を変更する可能性があります。 – Endophage

+0

@Endophage私は同じ正確なことを考えていました。ブラウザに、AJAXリクエスト中に無視しないヘッダーのリストがある場合、私は興味がありますか? –

+0

[この回答](http://stackoverflow.com/a/1534662/575527)では、リダイレクトについて指摘し、ハッキーなアプローチの代わりにJSONを使用しました。 – Joseph

0

を。 ?

:あなたのAJAX要求チェックで

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

、その後、それらがログインしている場合:ユーザーは見返りにそのようなユニークな文字列をログに記録されていない場合には、私はどうなるのか、全く影響は、ありませんしているので

$.get("someURL", function(data) { 
    if(data == "NOTLOGGEDIN"){ 
     //Do something 
    } else{ 
     //Display data 
    } 
}); 
関連する問題