我试图在第三个函数中调用两个不同的函数但是一个接一个地调用。一个函数有一个ajax调用,其值在其他函数中使用。这是一步一步的过程。我不想在另一个中使用一个。
function f1()
{
// ajax call
return r1
}
function f2(r2)
{
// do some of the work based on r2
}
function f3()
{
$.when(f1()).done(function(data){
f2(data)
});
}
我也试过$ .when()。then();但仍然毫无用处。
先谢谢。
更新: - 以下是基于@dweweiver提供的解决方案的问题的答案。
var json_data = '';
function f1()
{
$.ajax({
url: "test.php",
method: "POST",
async : false,
data: { },
success:function(data){
json_data = eval(data);
}
});
}
function f2(t)
{
console.log("values is "+t);
}
function f3()
{
$.when(f1()).done(function(){
f2(json_data);
});
}
感谢大家的反馈。
答案 0 :(得分:0)
这应该有效:
function f1() {
// Or some other Ajax request that returns a promise
return $.getJSON('path/to/your/service');
}
function f2(r2) {
// ...
}
f1().done(f2);
答案 1 :(得分:0)
尝试这种方式,我已经在本地进行了测试,并且效果很好
function deferredCalls () {
var jsonData = '';
var f1 = function ()
{
// ajax call
$.ajax({
url: "test.html",
method: "POST",
data: { id : menuId }
}).done(function(data) {
jsonData = data; //set the data
});
}
var f2 = function (data)
{
// do some of the work based on data
if(!!data){
//process the data
}
}
$.when(f1).done(function(){
f2(jsonData);
});
}
首先调用 f1
函数,该函数将成功生成ajax请求并返回成功数据,该数据设置为函数作用域变量jsonData
。
完成此过程后,将调用f2,它将开始使用jsonData
,这只是从f1
函数调用收到的数据。
快乐编码:)