为什么我的 AJAX 调用成功函数没有触发 java 脚本警报

Why is my AJAX call success function not firing a java script alert?

本文关键字:java 脚本 AJAX 我的 调用 成功 函数 为什么      更新时间:2023-09-26
$.ajax({
   url: '../api/notifications/deleteNotification?userId=' + userId + '&notificationId=' + notificationId,
   type: 'DELETE',
   success: function()
   {
       CreateNotificationTree(userId);
       alert('Delete successful.');
   },
   failure: function()
   {
       alert('Delete failed.');
   }
});

上述 ajax 调用的成功函数内的函数CreateNotificationTree(userId);会触发。但是,警报不会在之后触发。有人知道为什么吗?我也尝试使用多个浏览器。

编辑 - 发现我在执行 AJAX 调用时遇到此错误:

Uncaught TypeError: Cannot read property 'uid' of undefined kendo.web.min.js:23
(anonymous function) kendo.web.min.js:23
p.extend.each jquery.min.js:2
p.fn.p.each jquery.min.js:2
g.extend._attachUids kendo.web.min.js:23
g.extend.init kendo.web.min.js:22
(anonymous function) kendo.web.min.js:9
p.extend.each jquery.min.js:2
p.fn.p.each jquery.min.js:2
$.fn.(anonymous function) kendo.web.min.js:9
CreateNotificationTree NotificationsTreeView.js:17
(anonymous function) NotificationsTreeView.js:60
k jquery.min.js:2
l.fireWith jquery.min.js:2
y jquery.min.js:2
d

将错误记录到主机。

如果 ajax 方法失败,则不会看到警报,因为jQuery不会标识failure方法。

使用error回调记录错误。

还要使用console.log而不是alert这很烦人并停止执行流程

failure: function(){
   alert('Delete failed.');
}

应该是

error: function(){
   alert('Delete failed.');
}

并使用 donefail 而不是 successerror 回调,因为后者已从版本 1.8 开始弃用

$.ajax({
    url: '../api/notifications/deleteNotification?userId=' 
               + userId + '&notificationId=' + notificationId,
    type: 'DELETE'
}).done(function () {
    CreateNotificationTree(userId);
    console.log('Delete successful.');
}).fail(function (jqXHR, status, error) {
    console.log("Error : " + error);
});

使用传递给回调的arguments,您将能够查明错误。