因此,如果我对以下方法运行$(".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条件添加错误了?正在设置变量。
答案 0 :(得分:0)
啊,那真是愚蠢。我忘记了jquery click方法返回被点击的对象作为它的第一个参数。我不确定Chrome为什么会使用console.log将其报告为未定义。。我只需要将方法更改为addTask:function(obj,aTask){
即可正常工作。
Chrome处理它的方式似乎很奇怪(引发错误,但仍然以某种方式发送数据?)。在Firefox控制台中查看它似乎可以正确显示它是一个按钮对象。