$.post, бросая "незаконный вызов" - программирование
Подтвердить что ты не робот

$.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 {

                }
            });
        }
    }
4b9b3361

Ответ 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.