2012-07-30 19 views
16

Editar: Ninguna de las respuestas sugeridas hasta ahora ha funcionado.

Estoy ejecutando esta llamada con django. La primera vez que se ejecuta, el servidor devuelve "n_usr" (que cambia la forma en que los archivos de usuario entran). La segunda vez, solo arroja un error Illegal invocation.

function log_in() { 

     username = $('#usr_enter').val(); 
     password = $('#pass_enter').val(); 
     if(!n_usr){ 
      $.post('/ajax/login',{password: password, username: username}, function(data) { 
       if(data == "n_usr"){ 
       $('#new_user_entry').show('slow'); 
       n_usr = true; 
       } 
       else { 

       } 

      }) 
    }else { 
     password2 = $('#pass_re_enter'); 
     penname = $('#pen_enter'); 
      $.post('/ajax/login', {password: password, password2: password2, username: username, pen_name: penname, TN: "TN"}, function(data) { 
       if(data == "e_act"){ 

       } else { 

       } 
      }); 
     } 
    } 
+0

'Invocación ilegal' significa que está llamando a una función en el contexto incorrecto. –

+0

@Rocket ¿a qué te refieres con contexto? –

+0

Me gusta intentar llamar a 'console.log.call (document, 'test')'. Eso es llamar a 'console.log' en el contexto de' document'. O 'setTimeout (someFunc)'. –

Respuesta

19

En su else, tiene:

password2 = $('#pass_re_enter'); 
penname = $('#pen_enter'); 

Entonces usted tiene:

{password: password, password2: password2, username: username, pen_name: penname, TN: "TN"} 

Usted está recibiendo Illegal invocation porque jQuery está tratando de serializar el objeto jQuery para $.post, y no puede . Probablemente esté intentando llamar a un método de cadena, y le está pasando un objeto jQuery como contexto, lo que provoca el error.

Necesita agregar .val().

password2 = $('#pass_re_enter').val(); 
penname = $('#pen_enter').val(); 
+0

Lo que iba a sugerir también. –

+0

Te amo. Tuve un error similar y por alguna razón olvidé agregar un parámetro con ".val()", obtenía los errores más extraños. ¡Después de una hora, lo hice bien! Siempre hago la mayoría de los pequeños errores ... requiere mucha atención. Te agradezco;) – G4bri3l

+0

@ G4bri3l: ¡De nada! :-RE –

0

Bueno, no están llamando a la misma - la primera vez:

$.post(url_base+'/ajax/login' ... 

y el segundo

$.post('/ajax/login', {.... 

Cambiar el segundo uno para incluir url_base.

+0

Esto me parece correcto. +1 – Ohgodwhy

+0

¿Cómo activaría esto un error de "Invocación ilegal"? –

+0

url_base es una cadena vacía que pensé que había eliminado del programa. Agregarlo a la segunda llamada no cambia nada. Gracias sin embargo. –

Cuestiones relacionadas