在我的javascript中,我有一些针对各种操作的ajax请求$.getJSON({...})
。我有一个处理这些ajax请求的php应用程序。在处理实际请求之前,我的应用程序首先检查会话,如果用户尚未登录,则会发回刷新信号。就像是:
if (not logged in) {
header('Refresh: 0;');
}
else {
//process request
}
但是客户端实际上并没有刷新。在涉及到AJAX请求和http刷新标题时,我有什么遗漏吗?
答案 0 :(得分:4)
AJAX请求在被告知之前不会影响浏览器。意思是,如果我使用AJAX获取页面,它会被返回,可能存储在变量中,就是这样。之后它什么也没做。您需要解析返回数据并采取相应措施。
在您的情况下,您可能宁愿返回类似JSON的内容,让客户端解析返回数据的含义,并采取相应措施。
我倾向于做类似的事情:
{
"directives": {
//contains directives what to do first before parsing the data
"whatToDo" : "redirect"
},
"payload" : {
//actual page data
}
}
答案 1 :(得分:0)
因此,您的请求中的调用文件包含标题('Refresh:0;'); ?因为那根本没有效果,我要做的是如果用户没有登录则返回一个如此唯一的字符串:
if (not logged in) {
echo "NOTLOGGEDIN";
}
else {
//process request
}
然后在您的AJAX请求中检查他们是否已登录:
$.get("someURL", function(data) {
if(data == "NOTLOGGEDIN"){
//Do something
} else{
//Display data
}
});