Ajax 将JQuery 1.3.2升级到1.8.1
我被指派了一项任务,将JQuery 1.3.2升级到最新版本(目前为1.8.1)。升级后,除了$.ajax功能外,所有功能似乎都可以正常工作。以下代码调用服务器,然后执行回调函数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
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函数我无权访问。