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

Dam*_*che 0 jquery coffeescript

可能重复:
无法从jQuery Ajax调用中获取正确的返回值
如何从函数中返回AJAX调用的响应?

我有这个:

  get_json = (url) ->
    $.getJSON "#{url}.json", {}, (json, response) ->
      return json
Run Code Online (Sandbox Code Playgroud)

但这编译为:

getJson = function(url) {
  return $.getJSON("" + url + ".json", {}, function(json, response) {
    return json;
  });
};
Run Code Online (Sandbox Code Playgroud)

..并返回响应对象.我怎样才能返回json呢?

use*_*654 5

正在返回延迟对象,使用它来获取数据.使用您当前的get_json方法实现,此JavaScript应该可以正常工作:

get_json("http://example.com").done(function(obj){
    console.log(obj);
});
Run Code Online (Sandbox Code Playgroud)

您的代码可以简化为:

get_json = (url) ->
    $.getJSON "#{url}.json"
Run Code Online (Sandbox Code Playgroud)

转换没有错,你对ajax请求如何工作的假设是错误的.

您不能拥有一个具有url参数的函数,该参数发送ajax请求并从函数返回数据,而不会使ajax请求同步(由于各种原因这是一个坏主意).