【问题标题】:How to return json from $.getJSON (coffeescript) [duplicate]如何从 $.getJSON(coffeescript)返回 json [重复]
【发布时间】:2023-03-19 17:53:02
【问题描述】:

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

【问题讨论】:

  • 和上面提到的问题不同,这个问题是coffescript -> js转换的问题
  • 这是在开玩笑吗?问题在于coffeescript 'returning' $.getJSON。其他问题没有回答这个问题。
  • 删除了 jquery 标签,这样人们就不会感到困惑了。问题是coffeescript默认返回响应对象,我不知道如何防止。
  • 问题一模一样。 AJAX 是异步的。当服务器提供 JSON 时,脚本执行已经超过了该行。
  • @Zenph 我正在恢复 jQuery 标签,因为这个问题肯定是关于使用 jQuery 的 $.getJSON 方法。

标签: jquery coffeescript


【解决方案1】:

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

get_json("http://example.com").done(function(obj){
    console.log(obj);
});

您的代码可以简化为:

get_json = (url) ->
    $.getJSON "#{url}.json"

转换没有错,错在你对 ajax 请求如何工作的假设。

你不能有一个带有 url 参数的函数,它发送一个 ajax 请求并从函数返回数据而不使 ajax 请求同步(由于各种原因,这是一个坏主意)。

【讨论】:

  • 知道了,谢谢。有一些学习要做:)
  • 我猜咖啡脚本通过返回响应做了正确的事情,:-p
猜你喜欢
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多