$ .post抛出“非法调用”

时间:2012-07-30 20:56:36

标签: javascript jquery ajax

编辑:到目前为止建议的答案都没有奏效。

我正在用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 {

                }
            });
        }
    }

2 个答案:

答案 0 :(得分:21)

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

答案 1 :(得分:0)

嗯,你没有这么称呼他们 - 第一次:

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

和第二次

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

将第二个更改为包含url_base。