Dajaxice回调函数调用了两次

时间:2014-03-18 12:55:01

标签: python ajax django dajaxice neo4django

我正在使用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次 我百分百肯定:

  • ajax函数receiveChat被调用一次
  • 显示两次的消息存储一次。

我定义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确实如此。

0 个答案:

没有答案