我正在使用jquery试验MCV。我正在调用api,它返回数据 - 我想要做的是将数据返回到变量而不是在我的模型中调用additioanl函数。虽然(the_data = result),但以下代码并不能实现我的目标。我有什么想法可以实现这个目标吗?
function lookForSomething()
{
var the_data = $.ajax({ type: "GET",
url: TheUrl,
dataType: "jsonp",
success: function(result) { return result; }
});
return the_data;
}
非常感谢, Ĵ
答案 0 :(得分:1)
如果理解正确,您希望TheUrl返回的数据是lookForSomething的返回值。
从技术上讲,可以使用async选项执行此操作:
function lookForSomething()
{
var the_data;
$.ajax({ type: "GET",
url: TheUrl,
dataType: "jsonp",
async : false,
success: function(result) { the_data = result; }
});
return the_data;
}
我强烈建议你不这样做。它不像Javascript,它会在用户运行时锁定用户的浏览器。最好将回调传递给函数并从success
调用它。
答案 1 :(得分:0)
您可能正在寻找deferred objects:
function lookForSomething()
{
var the_data;
$.when(
$.ajax({ type: "GET",
url: TheUrl,
dataType: "jsonp",
success: function(result) { the_data=result; }
});
).done(function() {
return the_data;
}).fail(function() {
return '';
});
}
请记住,这仍然是异步的,因此当您拨打var ddd = lookForSomething();
时,由于呼叫可能仍在运行,因此ddd将没有您期望的值。我提出$.when()
的唯一原因是因为你似乎需要很多依赖。 $.when()
允许您等待multiple ajax commands。