如何从$ .getJSON(coffeescript)返回json

时间:2013-01-17 19:32:56

标签: jquery coffeescript

  

可能重复:
  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呢?

1 个答案:

答案 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请求同步(由于各种原因这是一个坏主意)。