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 回答