Uncaught TypeError при простом вызове AJAX - PullRequest
0 голосов
/ 06 февраля 2019

Итак, если я запускаю $(".addButton").click(Task.requests.addTask); по методу, указанному ниже:

addTask:function(aTask){
    console.log(aTask);
    if(typeof aTask === "undefined"){
        aTask = {name:"New Task",desc:"none"};
    }
    console.log(aTask);
    $.ajax({
        url:"/tasks/data/tasks",
        dataType:"json",
        type:"POST",
        data:aTask,
        success: function(){
            console.log("Added Successfully");
            Task.requests.allTasks();
            },
        error: function(err){
            console.error(err);
        }
    });

},

, я получаю

undefined /*(from the first console.log(aTask))*/
{name: "New Task", desc: "none"} /*(from the second console.log(aTask))*/
jquery-3.3.1.min.js:2 Uncaught TypeError: Cannot read property 'type' of undefined
    at y.handle (jquery-3.3.1.min.js:2)
    at i (jquery-3.3.1.min.js:2)
    at jt (jquery-3.3.1.min.js:2)
    at jt (jquery-3.3.1.min.js:2)
    at jt (jquery-3.3.1.min.js:2)
    at jt (jquery-3.3.1.min.js:2)
    at Function.w.param (jquery-3.3.1.min.js:2)
    at Function.ajax (jquery-3.3.1.min.js:2)
    at HTMLButtonElement.addTask (tasks.js:67)
    at HTMLButtonElement.dispatch (jquery-3.3.1.min.js:2)

в консоли.at HTMLButtonElement.addTask (tasks.js:67) Будучи строкой $.ajax({ и запрос AJAX обрабатывается, как и ожидалось, с объектом, отправляемым правильно и отправляющим правильные данные: {name: "New Task", desc: "none"} в API (в Chrome, в Firefox он умирает здесь).

Если я удаляю условное условие if(typeof aTask === "undefined"){, установленное для обработки пустого параметра (который будет использоваться большую часть времени), и просто устанавливаю переменную aTask без каких-либо условий, ошибка Cannot read property 'type' of undefined исчезает.

Я чувствую, что упускаю что-то глупоеПочему я получаю сообщение об ошибке с добавленным условным оператором typeof?Переменная устанавливается ..

1 Ответ

0 голосов
/ 06 февраля 2019

Ах, это было глупо.Я забыл, что метод jquery click возвращает объект, выбранный в качестве первого параметра.Я не уверен, почему Chrome сообщал об этом как неопределенном с console.log. Мне просто пришлось изменить свой метод на addTask:function(obj,aTask){, и все работало правильно.

Кажется очень странным, как Chrome обрабатывает его (выдает ошибку, но все равно каким-то образом отправляет данные?).Просмотр его в консоли Firefox, казалось, правильно показал, что это был объект кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...