[英]JQuery $.ajax set cookie and get html response
我有一個頁面,我想在用戶閑置15分鍾時警告他們。
所以我要做的是,設置一個cookie,該cookie在15分鍾后過期,並不斷輪詢服務器端頁面以每10分鍾刷新一次cookie過期時間。
我的問題是,我的ajax調用更新“ cookie過期時間”不會返回任何內容。 但是在設置cookie后,它應該以HTML形式返回“ OK”(這是在python瓶中完成的。)
如果我在新標簽頁中打開此網址,則會延長Cookie的過期時間,並給我“確定”,這是正確的。 但是當我使用Jquery ajax調用它時,它不會返回任何內容。
這是Ajax請求的屏幕截圖:
如您所見,前兩個請求使用的是普通的ajax調用,該調用不返回任何內容。
最后一個是當我使用“編輯並重新發送”選項時-它將類型作為html,但是前兩個調用類型是普通類型。
如果我嘗試使用firefox開發人員工具中的“編輯並重新發送”選項,並在不更改任何內容的情況下重新發送該請求,則該請求將起作用並返回“確定”。
可能是什么問題? 我嘗試了在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")
假設我呼叫的網址是mysite.com/keepalive/
,並且該網址在同一域名內。
有人可以幫我嗎? 我在哪里做錯了? 謝謝!!
Firefox開發人員工具幾乎沒有提供有關該錯誤的信息。 如果我在Chrome中打開它,我會看到它顯示“已取消”。 我經過一番搜索,發現發生這種情況是因為我的腳本沒有等到ajax調用完成。
因此,在我向ajax請求添加async:false
后,此問題已修復。
那是;
$.ajax({
timeout: options.AJAXTimeout,
url: options.keepAliveURL,
dataType:"html",
async:false, // ---> added this option.
error: function(){
self.failedRequests--;
},
success: function(response){
if($.trim(response) !== options.serverResponseEquals){
self.failedRequests--;
}
},
complete: function(){
if( recurse ){
self._startTimer();
}
}
});
希望這會幫助某人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.