0
問題是,如果有新消息,而不是隻發出一次警報,Chrome會以相同的值警告5-8次。相反,這些代碼適用於FF,它只警告一次。我如何修復代碼以支持Chrome。 HTML:Jquery ajax在Chrome中發回多個響應,而在FF中只發送一個響應
setInterval(function() {
$.get('/restaurant/get_msg_notification',{},function(data){
alert(data)
})
}, 1000)
查看:
def get_msg_notification(request):
while True:
# check is there any new messages ?
msg = Message.objects.filter(receiver = user, notify = False)
if(len(msg)==0 and patient<5):
time.sleep(5)
patient+=1
else:
break
if(len(msg) > 0):
data = serializers.serialize('json', msg)
msg.update(notify = True)
return HttpResponse(data, mimetype="application/json")
else:
return HttpResponse("")
現在我嘗試刪除'耐心'變量,因此它不是長時間輪詢。該方法給了我一個正確的結果(只有一次響應)。但是,沒有長時間輪詢,ajax需要每秒發送一次昂貴的請求。 –
找到了長鏈輪詢和從這個鏈接的解決方案的很好的解釋。 http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery –