我正在使用django-dajaxice-ng
包(django-dajaxice
分叉Django
1.5及以上,因为我使用Django 1.5.4
),我有这个奇怪的问题。
有时回调函数被调用两次甚至更多
简单用法:
...
{% load dajaxice_templatetags %}
...
{% dajaxice_js_import %}
<script>
function update_chat(data) {
messages = eval(data.messages);
howmany=messages.length;
if (howmany>0)
console.log('called');
for (i=0;i<howmany;i++) {
M=messages[i];
console.log(M.msg,M.sent);
};
}
setInterval(function() {
Dajaxice.myapp.receiveChat(update_chat,{'userID': {{otheruser.id}} });
},2000);
</script>
和myapp/ajax.py
:
def receiveChat(request,userID):
# find new messages from userID and mark them as READ.
return json.dumps({'messages':serialized_messages})
这是控制台日志:
called
"Message" "16:09:28"
called
"Message" "16:09:28"
如您所见,有时(通常,实际上)update_chat
被触发2或3次
我百分百肯定:
我定义serialized_messages = json.dumps(messages)
,messages
是一个词典列表
结果是这样的:
'[{"msg": "Message", "sent": "16:09:28"}]'
在这种情况下,只有一条消息,但与多个消息一起使用。
我不得不做这个双序列化(return
中的另一个)因为显然dajaxice只接受dict作为允许的返回值。
任何有这种行为的人?任何线索?
修改
我正在使用使用neo4django
的{{1}},我必须在模型上执行.save(),并且仅通过该保存注意我遇到了问题,可能是因为另一个HTTP请求?
编辑2
这是不一个dajaxice问题,切换到ajax neo4j-rest-client
给出相同的结果,但实际上我无法弄明白。似乎并非所有浏览器都在这样做,确定Chrome确实如此。