简单的AJAX调用未捕获到TypeError

时间:2019-02-06 01:39:42

标签: javascript jquery ajax

因此,如果我对以下方法运行$(".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条件if(typeof aTask === "undefined"){(大多数情况下,这将是大多数时间),而只设置了aTask变量而没有条件,则{{1 }}错误消失了。

我觉得我在这里想念一些愚蠢的东西。为什么我的typeof条件添加错误了?正在设置变量。

1 个答案:

答案 0 :(得分:0)

啊,那真是愚蠢。我忘记了jquery click方法返回被点击的对象作为它的第一个参数。我不确定Chrome为什么会使用console.log将其报告为未定义。。我只需要将方法更改为addTask:function(obj,aTask){即可正常工作。

Chrome处理它的方式似乎很奇怪(引发错误,但仍然以某种方式发送数据?)。在Firefox控制台中查看它似乎可以正确显示它是一个按钮对象。