对象#<XMLHttpRequest>没有'done'方法。

5
我尝试实现一个简单的ajax GET请求。在回调部分,我想要调用一些函数。以下是代码:
$.ajax({
          url: "<?php echo SITE_URL?>ajax_pages/ajx_getcard.php?id="+obj.value,
          context: document.body
        }).done(function() { 
          $(this).addClass("done");
        });

但是它显示异常

未捕获的类型错误:对象#没有方法'done' replace_entry.php:105 getCardno replace_entry.php:105 onblur replace_entry.php:118

我正在使用谷歌浏览器


你正在使用哪个版本的jQuery? - Sandeep G B
2个回答

17

你可能在使用一个旧版本的jQuery - 新版本返回一个jqXHR对象,该对象具有done属性。
您可以通过查看源代码或在控制台中键入$().jquery来快速检查您的版本。

如果您无法升级,则应使用降级的代码:

$.ajax({
      url: "...",
      context: document.body,
      complete: function() { 
           $(this).addClass("done");
      });

1
完整、成功和错误已被弃用。 http://api.jquery.com/jQuery.ajax/ - Sandeep G B
6
如果你使用的是旧版本的 jQuery,就不行了。我之前说过:"如果你不能升级的话"。 - Kobi

0

将“done”替换为“success”..??

$.ajax({
      url: "<?php echo SITE_URL?>ajax_pages/ajx_getcard.php?id="+obj.value,
      context: document.body
    }).success(function() { 
      $(this).addClass("done");
    });

2
这仍然无法在旧版本的Jquery上运行 - 需要稍微更改语法: $.ajax({ type: 'POST', url: 'some_script.php', data: { "id": Id, "description": description }, success: function() { alert("done!"); } }); - user1027562

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接