【发布时间】:2015-10-06 13:58:42
【问题描述】:
我有一个页面,我想在用户空闲 15 分钟时向他们发出警告。
所以我所做的是,我设置了一个 15 分钟后过期的 cookie,并不断轮询服务器端页面以每 10 分钟刷新一次 cookie 过期时间。
我的问题是,我更新“cookie 过期时间”的 ajax 调用没有返回任何内容。但它应该在设置 cookie 后以 html 的形式返回“OK”(这是在 python,bottle 中完成的。)
如果我在新选项卡中打开此 url,它会延长 cookie 过期时间并给我“OK”,这是正确的。但是当我使用 Jquery ajax 调用它时,它不会返回任何内容。
这是 Ajax 请求的屏幕截图:
如您所见,前两个请求使用的是普通的 ajax 调用,没有返回任何内容。
最后一个是当我使用“编辑并重新发送”选项时 - 它采用 html 类型,但前两次调用的类型是普通的。
如果我在 firefox 开发者工具中尝试“编辑并重新发送”选项,并在不更改任何内容的情况下重新发送请求,它会起作用并返回“OK”。
可能是什么问题?我尝试了在 SO 和 Jquery 文档中找到的一切可能。但似乎没有什么对我有用。这是我的最终代码。
$.ajax({
timeout: options.AJAXTimeout,
url: options.keepAliveURL,
dataType:"html",
error: function(){
self.failedRequests--;
},
success: function(response){
if($.trim(response) !== options.serverResponseEquals){
self.failedRequests--;
}
},
complete: function(){
if( recurse ){
self._startTimer();
}
}
});
我更新 cookie 的页面:
@app.route('/keepalive/', method = 'GET')
@app.route('/keepalive', method = 'GET')
def keepalive():
expire_date = datetime.datetime.utcnow()
expire_date = expire_date + datetime.timedelta(minutes=15)
ses_key=request.get_cookie('session_key')
response.set_cookie("session_key", ses_key, expires=expire_date, path="/")
response.content_type = 'text/html; charset=UTF-8'
return template('<div>{{msg}}</div>', msg = "OK")
假设我调用的 URL 是 mysite.com/keepalive/,并且在同一个域名内。
有人可以帮我解决这个问题吗?我在哪里做错了?谢谢!!
【问题讨论】:
标签: jquery python ajax cookies bottle