我正在迁移到jQuery 1.8并将我的ajax结果处理程序从success:
和error:
更改为done()
和fail()
。
但是,在我的done()
处理程序中,我开始收到类似
this.each is not a function
尽管ajax调用包含context:
参数,但仍如前所述。不知怎的,this
背景已经消失了。
这是主叫代码:
function vzload(args) {
return $.ajax(args).then(function(json) {
if (json.exception) {
var e = new Exception(json.exception.type, args.url + ':<br/><br/>' + json.exception.message);
vz.wui.dialogs.exception(e);
return $.Deferred().reject();
}
return $.Deferred().resolve(json);
});
}
这是错误发生时:
var deferred = vz.load({
controller: 'capabilities',
context: someobject
}).done(function(json) {
this.each(...)
});
我尝试将分辨率更改为:
return $.Deferred().resolveWith(this, json);
现在错误是
TypeError: json is undefined
修改ajax结果的正确方法是什么?使用上下文对象时延迟?
答案 0 :(得分:0)
args
作为数组,而不是单个普通参数。只有在第一种情况下,即使在json
没有被定义之前,这个错误也会被失败所覆盖。
所以&#34;对&#34;方式似乎是:
return $.Deferred().resolveWith(this, [json]);