【发布时间】:2014-09-16 11:30:24
【问题描述】:
我正在实施 Mozilla 的角色身份验证(即 browserid)。 所以,我有以下 onLogin():
function onLogin(pAssertion) {
var sPHPSessionID = $.cookies.get("PHPSESSID")+'';
var sFoolCache = new Date().getTime() + '' + Math.random();
$.ajax(
{
cache: false,
type: 'POST',
url: '/webservice.php?id=personaauth&u=i',
data: { assertion: pAssertion, PHPSESSID: sPHPSessionID, z: sFoolCache },
success: function(res, status, xhr) { alert("do reload"); },
error: function(xhr, status, err) {
navigator.id.logout();
alert("Login failure: " + err);
}
});
}
哪里有“alert("do reload")" 我通常有一个 window.location.reload() 调用。 问题是,尽管我努力清除而不使用浏览器缓存 (Firefox),但我的 /webservice.php 页面根本没有被调用。 ajax 调用立即执行“成功”函数(如果我将“reload()”调用留在代码中,这会使我的窗口重新加载在一个戏剧性的循环中)。 我需要 /webservice.php 调用中的 PHP 会话 ID,因此我将 PHPSESSIONID cookie 传递给页面。
我清除了我的 Firefox 缓存。我关闭了浏览器,将“sFoolCache”变量添加到 url(而不是帖子),但它也不起作用。 我迷路了。
【问题讨论】:
-
我的猜测是您的 webservice.php 不在顶级目录中。如果在浏览器中输入 http://
/webservice.php 会得到什么响应? -
此外,
success、error和此类属性在 jQuery 1.8 中已弃用。请改用$.ajax().done(function(data) { /* ... */ })。检查here了解更多信息。 -
我知道我的 webservice.php 网址很好,应该在我的问题中告诉你,谢谢安迪。 @Michal:呸!,blabla.done()。就做到了。太棒了!谢谢:-)
标签: php jquery ajax browser-cache persona