19

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

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

                }
            });
        }
    }
4

2 回答 2

21

在您的else中,您有:

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

然后你有:

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

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

您需要添加.val().

password2 = $('#pass_re_enter').val();
penname = $('#pen_enter').val();
于 2012-07-31T13:36:45.573 回答
0

好吧,您并没有将它们称为相同的名称-第一次:

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

和第二个

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

将第二个更改为包含 url_base。

于 2012-07-30T21:02:30.400 回答