$.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 {
}
});
}
}
Ответы
Ответ 1
В вашем 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();
Ответ 2
Ну, вы не называете их одинаковыми - в первый раз:
$.post(url_base+'/ajax/login' ...
и второй
$.post('/ajax/login', {....
Измените второй, чтобы включить url_base.