可能重复:
Can’t get correct return value from an jQuery Ajax call
How to return the response from an AJAX call from a function?
我有这个:
get_json = (url) ->
$.getJSON "#{url}.json", {}, (json, response) ->
return json
但这会编译成:
getJson = function(url) {
return $.getJSON("" + url + ".json", {}, function(json, response) {
return json;
});
};
..并返回响应对象。我怎样才能返回json呢?
答案 0 :(得分:5)
正在返回延迟对象,使用它来获取数据。使用get_json
方法的当前实现,此JavaScript应该可以工作:
get_json("http://example.com").done(function(obj){
console.log(obj);
});
您的代码可以简化为:
get_json = (url) ->
$.getJSON "#{url}.json"
转换没有任何问题,你对ajax请求如何工作的假设是错误的。
您不能拥有一个具有url参数的函数,该参数发送ajax请求并从函数返回数据而不会使ajax请求同步(由于各种原因这是一个坏主意)。