2012-07-30 10 views
16

Modifica: nessuna delle risposte suggerite finora ha funzionato affatto.

Sto eseguendo questa chiamata con django. Alla prima esecuzione, il server restituisce "n_usr" (che modifica la forma in cui si trova l'utente). La seconda volta, si genera solo un errore 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

'Chiamata non valida 'indica che si sta chiamando una funzione nel contesto sbagliato. –

+0

@Rocket cosa intendi per contesto? –

+0

Come provare a chiamare 'console.log.call (document, 'test')'. Questo sta chiamando 'console.log' nel contesto di' documento'. Oppure 'setTimeout (someFunc)'. –

risposta

19

Nella tua else, si ha:

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

Poi ci sono:

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

Hai trovato Illegal invocation perché jQuery sta cercando di serializzare l'oggetto jQuery per $.post, e non può . Probabilmente sta cercando di chiamare un metodo stringa, e lo sta passando ad un oggetto jQuery come contesto, causando così l'errore.

È necessario aggiungere .val().

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

Quello che stavo per suggerire pure. –

+0

Ti amo. Ho avuto un errore simile e per qualche motivo ho dimenticato di aggiungere un parametro con ".val()", stavo ottenendo gli errori più strani. Dopo un'ora, ho fatto bene! Faccio sempre i più piccoli errori. Presta molta attenzione. Tjìhank te;) – G4bri3l

+0

@ G4bri3l: sei il benvenuto! :-D –

0

Beh non chiedono loro lo stesso - per la prima volta:

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

e il 2 °

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

Modificare il 2 ° per includere url_base.

+0

Mi sembra corretto. +1 – Ohgodwhy

+0

Come si attiverebbe un errore di "chiamata illegale"? –

+0

url_base è una stringa vuota che pensavo di aver rimosso dal programma. Aggiungendolo alla seconda chiamata non cambia nulla. Grazie comunque. –

Problemi correlati