编辑:到目前为止建议的答案都没有奏效。
我正在用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 {
}
});
}
}
答案 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。