2011-11-11 7 views
0

Eh bien, j'ai une forme, similaire à dajax "django forms" exemple, tout fonctionne bien, sauf le retour JSON n'est pas en cours de traitement, j'ai modifié le jquery.dajax.core. js comme ceci:Processus Django/Dajax non traité

... 
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; 
      ... 

Un retour JSON de mon ajax.py est:

[{"cmd": "remcc", "id": "#contact_form", "val": ["error"]}, {"cmd": "alert", "val": "Thank you, Alejandro"}, {"cmd": "js", "val": "alert(\"jummmmm\");"}] 

Lorsque le JSON est traité de retour dans le navigateur, je reçois le premier, mais rien d'autre "Entro!" , rien du JSON n'est traité. Si volontairement casser des choses dans la fonction ajax.py, j'obtiens le comportement correct, alerte Dajaxice.EXCEPTION.

Des suggestions?

--EDIT--

La fonction Dajax.process:

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}); 
    } 

Et la fonction ajax.py:

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() 

Ok, Firebug échoue silencieux, chrome dit:

Uncaught TypeError: Cannot call method 'each' of undefined 
Dajax.process 
oXMLHttpRequest.onreadystatechange 
b.dispatchEventda 
k 
b.open._object.onreadystatechange 

et, Opera's libellule:

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 

versions jQuery testé avec le même comportement:

1.6.2 1.6.2.min 1.6.4

Répondre

Questions connexes