首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未处理Django/Dajax进程

未处理Django/Dajax进程
EN

Stack Overflow用户
提问于 2011-11-11 19:30:19
回答 1查看 756关注 0票数 0

好吧,我有一个表单,类似于dajax的"django forms“示例,除了返回的JSON没有被处理之外,一切都很好,我已经像这样修改了jquery.dajax.core.js:

代码语言:javascript
复制
...
process: function(data)
{
    if(data==Dajaxice.EXCEPTION){
        alert('Something went wrong, please reload the page.');
    }
    else{
        console.log(data);
        alert("ENTRO!");
        $.each(data, function(i,elem){
            alert("ENTRO!2");
            console.log(elem.cmd);
        switch(elem.cmd)
        {
            case 'alert':
                alert(elem.val)
            break;
            ...

从我的ajax.py返回的一个json是:

代码语言:javascript
复制
[{"cmd": "remcc", "id": "#contact_form", "val": ["error"]}, {"cmd": "alert", "val": "Thank you, Alejandro"}, {"cmd": "js", "val": "alert(\"jummmmm\");"}]

当json在浏览器中被处理回来时,我得到了第一个"Entro!",但除此之外,JSON的任何内容都没有被处理。如果故意破坏ajax.py函数中的内容,我会得到正确的行为,警告Dajaxice.EXCEPTION。

有什么建议吗?

-编辑--

Dajax.process函数:

代码语言:javascript
复制
    validateContactForm = function() {
        datos = jQuery('#contact_form').serializeObject();
        console.log(datos);
        // jQuery
        // If you are using jQuery, you need this form->object serializer
        // https://github.com/cowboy/jquery-misc/blob/master/jquery.ba-serializeobject.js
        Dajaxice.ajax.validateContactForm(Dajax.process,{'formulario':datos});
    }

和ajax.py函数:

代码语言:javascript
复制
from dajax.core import Dajax

@dajaxice_register
def validateContactForm(request, formulario):
    dajax = Dajax()
    form = ContactoForm(formulario)

    if form.is_valid():
        dajax.remove_css_class('#contact_form','error')
        dajax.alert(_("Thank you, %(name)s") % {"name":form.cleaned_data.get('nombre')})
        form.save();
       dajax.script('alert("jummmmm");')
       print dajax, dir(dajax)
   else:
       dajax.remove_css_class('#contact_form','error')
       print form.as_ul()
       for error in form.errors:
           dajax.add_css_class('#id_%s' % error,'error')
           print error
           print dajax, dir(dajax)
   return dajax.json()

好吧,Firebug静默失败,chrome说:

代码语言:javascript
复制
Uncaught TypeError: Cannot call method 'each' of undefined
 Dajax.process
 oXMLHttpRequest.onreadystatechange
 b.dispatchEventda
 k
 b.open._object.onreadystatechange

还有,歌剧中的“蝗虫”:

代码语言:javascript
复制
Uncaught TypeError: Cannot call method 'each' of undefined
Dajax.processjquery.dajax.core.js:11
oXMLHttpRequest.onreadystatechangedajaxice.core.js:100
b.dispatchEventdajaxice.core.js:141
kdajaxice.core.js:135
b.open._object.onreadystatechange

使用相同行为测试的jQuery版本:

1.6.2 1.6.2.min 1.6.4

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-30 19:26:50

我也遇到了同样的问题,然后在这个站点上运行了这个函数:Convert form data to JavaScript object with jQuery

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8093342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档