Ajax 将JQuery 1.3.2升级到1.8.1

Ajax 将JQuery 1.3.2升级到1.8.1,ajax,jquery,Ajax,Jquery,我被指派了一项任务,将JQuery 1.3.2升级到最新版本(目前为1.8.1)。升级后,除了$.ajax功能外,所有功能似乎都可以正常工作。以下代码调用服务器,然后执行回调函数dofuturestuff,以执行其他工作: function ChangeContent(url, somepageobject) { var xhrobj = $.ajax({ url: url, context: somepageobject, callback: d

我被指派了一项任务,将JQuery 1.3.2升级到最新版本(目前为1.8.1)。升级后,除了$.ajax功能外,所有功能似乎都可以正常工作。以下代码调用服务器,然后执行回调函数
dofuturestuff
,以执行其他工作:

function ChangeContent(url, somepageobject) {
   var xhrobj = $.ajax({
       url: url,
       context: somepageobject,
       callback: doFurtherStuff,
       success: function(data) {
                somepageobject.html($(data));
                this.callback.call(this.context[0], data); // >> Code breaks here
           }
  });
  return xhrobj;
 }
运行此代码块时,服务器数据返回正常,但随后出现以下错误:

IE10和IE9:

JavaScript运行时错误:无法获取未定义的属性“call” 或空引用

谷歌浏览器:

未捕获的TypeError:无法调用未定义的方法“call”

对象“callback”在1.8.1中没有定义,但在1.3.2中一切都很好,如果必要,我很乐意更改代码。我就是想不出办法。

尝试使用jQuery then()

ajax()返回一个延迟对象,以便您可以让它在完成后执行操作。

尝试使用jQuery then()


ajax()返回一个延迟对象,以便您可以让它在完成后执行操作。

我必须回答我自己的问题,因为所有其他解决方案(虽然正确)都不能解决我的问题,除非更改客户端(被调用方)通信和向方法发送参数的方式,因为我无法控制它们(外部客户)

我所需要的只是将上面示例中的“context”更改为“context”,以使用JQuery 1.8.1,以下是工作代码:

function ChangeContent(url, somepageobject) {
   var xhrobj = $.ajax({
       url: url,
       thecontext: somepageobject,
       callback: doFurtherStuff,
       success: function(data) {
                somepageobject.html($(data));
                this.callback.call(this.thecontext[0], data); // >> Code breaks here
           }
  });
  return xhrobj;

我必须回答我自己的问题,因为所有其他解决方案(虽然正确)在不改变客户端(被调用方)通信方式和向方法发送参数的情况下都不能解决我的问题,我无法做到这一点,因为我无法控制它们(外部客户端)

我所需要的只是将上面示例中的“context”更改为“context”,以使用JQuery 1.8.1,以下是工作代码:

function ChangeContent(url, somepageobject) {
   var xhrobj = $.ajax({
       url: url,
       thecontext: somepageobject,
       callback: doFurtherStuff,
       success: function(data) {
                somepageobject.html($(data));
                this.callback.call(this.thecontext[0], data); // >> Code breaks here
           }
  });
  return xhrobj;

自从jQuery的1.3.2版本以来有了很大的变化,ajax方法现在可以与Defender一起使用,您可能应该使用它。自从jQuery的1.3.2版本以来有了很大的变化,ajax方法现在可以与Defender一起使用,您可能应该使用它。但是我只能更新这个函数的内容,有很多调用上面的ChangeContent函数我无权访问。但是我只能更新此函数的内容,有许多调用上面的ChangeContent函数我无权访问。