我需要为ajax查询的结果设置一个变量。我意识到我不能只在成功函数中返回结果,因为这是一个异步调用。但是想实现这个将是一个回调函数,而不是设置为同步调用。
我想实现类似的目标:
myMethod: function() {
var result = function(callback) {
this.getResults(params)
}
},
getResults: function(params) {
$.ajax({
type: 'GET',
url: 'some/url',
data: params,
success: function(data) {
callback(data).call();
}
});
}
结果=数据
我知道我的语法不对,我已经尝试了很多变化并且找不到有用的东西。任何帮助都会非常感激。感谢您!
答案 0 :(得分:2)
你很亲密。将回调函数传递给getResults
。
myMethod: function() {
this.getResults(params, callback);
},
getResults: function(params, callback) {
$.ajax({
type: 'GET',
url: 'some/url',
data: params,
success: function(data) {
callback(data);
}
});
}
请注意,我删除了var result =
,因为根据您提到的异步性,这不会起作用。如果您需要对data
进行进一步处理,则必须在回调中进行。
答案 1 :(得分:-1)
您是否尝试将异步设置为false?
myMethod: function() {
var result = function(callback) {
this.getResults(params)
}
},
getResults: function(params) {
$.ajax({
type: 'GET',
async:false, //<-- Here
url: 'some/url',
data: params,
success: function(data) {
callback(data).call();
}
});
}