$ .post投掷“非法调用”

编辑:迄今为止建议的答案都没有奏效。

我正在用django运行这个电话。 第一次运行时,服务器返回“n_usr”(更改用户文件的格式)。 第二次,它只是抛出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 { } }); } } 

在你的else ,你有:

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

然后你有:

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

您正在进行Illegal invocation因为jQuery正在尝试为$.post序列化jQuery对象,但它不能。 它可能试图调用一个字符串方法,并将它作为上下文传递给jQuery对象,从而导致错误。

您需要添加.val()

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

嗯,你不是一样的 – 第一次:

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

和第二个

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

将第二个更改为包含url_base。