当前位置: 首页 > 知识库问答 >
问题:

如何从Ajax请求函数返回JSON?

沈宏朗
2023-03-14

我想建立一个网站,使用客户端调用一个带有JavaScript的API。我不知道怎么做,所以我搜索了一下,发现了jQuery。然后我编写了我的函数来发出请求。它看起来如下所示:

async function makeRequest(url) {
  await $.getJSON(url, function (data) {
    console.log(data);
    return data;
  });
}

这工作良好,print语句打印接收到的数据。但是如果我从另一个函数调用这个函数,它不会返回任何东西。每次都是未定义的。一个例子:

document.addEventListener("DOMContentLoaded", async function () {
  var players = await makeRequest(
    "https://phijoto.ddns.net/Playtime/playtime.json"
  );
  console.log(players);
});

async function makeRequest(url) {
  await $.getJSON(url, function (data) {
    console.log(data);
    return data;
  });
}

如果我运行这个,它会通过第二个print语句输出接收到的数据,但第一个总是返回“undefined”。对此我能做些什么呢?

共有1个答案

宣意致
2023-03-14

您必须从makerequest返回一些内容。

还有:不要把回调和承诺混在一起,充其量这会让代码变得混乱。

async function makeRequest(url) {
  const data = await $.getJSON(url);
  console.log(data);
  return data;
}
 类似资料:
  • 问题内容: 我有一个函数,用关键字声明一个变量。然后,它将启动AJAX请求以设置变量的值,然后从函数中返回此变量。 但是,我的实现失败了,我也不知道为什么。 这是代码的简化版本; 问题答案: AJAX请求是异步的。您的sendRuest函数正在执行,正在发出AJAX请求,但它是异步发生的;因此,sendRuest的其余部分在AJAX请求(和onreadystatechange处理程序)执行之前就已

  • 我是否可以从获取数据以在该函数之外使用? 我已经试过了。

  • 问题内容: 在我的前端JavaScript应用程序中,我发出了ajax请求以从服务器获取数据。一旦获得数据,我想将该信息返回给视图。 我该怎么做? 问题答案: 而不是从:返回来传递给函数。

  • 问题内容: 我想做的事情似乎很简单:通过 HTML 页面并从中提取一个值。 问题是 jQuery 拒绝解析返回的HTML。 同时,我正在玩的小提琴没有用,因此我无法提供其他可行的示例。 更新: 我的新提琴工作正常,但是似乎问题在于,在我的实际项目中,我试图解析大量复杂的HTML。这是一个已知问题吗? 问题答案: 您的代码工作正常。您只是没有正确使用jsFiddle的API。检查文档中的(http:

  • 问题内容: 如何从函数内部返回值? 这是我的基本设置: 问题答案: 使用回调函数,这是JavaScript的方式:

  • 问题内容: 随着框架的发展,我决定将其拆分为文件,而不是将其保留在主设计文件中。但是,这样做不会返回任何值。 数据不为空-如果我警告js文件中的值,它们在那里! 功能: 1 .js文件中的功能(在执行之前包含) 因此,这是执行部分: 而且测试是空的…我已经尝试过不同的编写方式,但是我想我误解了js的可能性吗? 问题答案: 您不能这样做:由于调用是异步的,因此get_data函数无法返回ajax调用