【问题标题】:Why is my AJAX call success function not firing a java script alert?为什么我的 AJAX 调用成功函数没有触发 java 脚本警报?
【发布时间】:2013-08-15 18:35:12
【问题描述】:
$.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

【问题讨论】:

  • 你在控制台没有错误?
  • 如果该函数抛出错误,则永远不会显示警报。
  • 你确定吗?如果您不密切注意,jQuery 往往会默默地失败
  • 你在 CreateNotificationTree 中有“抛出”吗?
  • CreateNotificationTree(userId) 有可能成功运行,直到它失败。你确定整个函数都成功完成了吗?

标签: javascript jquery ajax


【解决方案1】:

将错误记录到您的控制台。

如果 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,您将能够查明错误。

【讨论】:

  • 感谢您的回复!我现在试一试,稍后会报告。
  • 我用收到的错误消息更新了我的 OP。不过,我不确定这意味着什么。
  • @Rj。看起来你的 ajax 是一个请求。 CreateNotificationTree 方法中的错误是错误的来源。您似乎正在尝试访问未定义对象的属性
  • 就是这样。我需要从 DOM 中销毁剑道树视图,因为我在尝试刷新数据时复制了它。感谢您的帮助!
  • @Rj。很高兴有帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
相关资源
最近更新 更多