我们在应用程序中使用jQuery
来进行AJAX调用。如何使用jQuery
在特定上下文中使用方法?我在dojo
使用dojo.hitch()
进行了success
。
jQuery中有类似的东西吗?以下是我们使用的示例代码。我需要在SampleMethod
的上下文中执行resultSetHandler
处理程序。以下代码应该
给我异常,因为jQuery
在窗口上下文中不可用。你能不能让我知道。
我们正在使用function SampleMethod(){
this.invokeProcedure=function(procedurePath){
$.ajax({
type: "GET",
url: procedurePath,
dataType: "json",
success: resultSetHandler,
error: errorHandler
});
}
this.resultSetHandler=function(args){
//Handle the result
}
this.errorHandler=function(args){
//Handle the result
}
}
var sampleObj=new SampleMethod();
sampleObj.invokeProcedure('url');
版 1.3.2
{{1}}
答案 0 :(得分:2)
此版本的jQuery在这一点上已经无可救药地老了,你应该升级。您要查找的功能是jQuery.proxy
,仅适用于1.4 +
如果您正在升级,但您应该考虑升级到最新版本,那么您现在只有4个主要版本。
如果您在一个不允许升级3.5岁图书馆的环境中工作,请考虑为自己复制source of jQuery.proxy
并使其正常工作。
答案 1 :(得分:2)
保留this
并将其包装在函数中:
this.invokeProcedure=function(procedurePath){
var savedThis = this;
$.ajax({
type: "GET",
url: procedurePath,
dataType: "json",
success: function() { savedThis.resultSetHandler(); },
error: function() { savedThis.errorHandler(); }
});
}
(可能应该将“success”函数参数传递给“resultSetHandler”。)
编辑 - 上面将在一般情况下处理这类问题,但@Blaster在评论中正确指出jQuery $.ajax
机制提供了一个更简单的解决方案。可以在传入的参数对象中设置context
属性,该值将用作回调的上下文。也就是说,添加:
context: this,
到$.ajax
参数对象可以使你的工作正常。