![](/img/trans.png)
[英]Hydrate my React app with HTML from the API instead of static HTML from index.html
[英]Why is fetch returning my React app's index.html instead of the URL I provided?
我正在尝试在 JavaScript 中发出提取请求。 目标是将所有 JSON 从这里获取到我的 React 应用程序中。 我想我正在使用可用的最简单的方法之一,但我仍然设法搞砸了..
我的预期结果是带有 json 数据的console.log()
输出。 我得到的结果是一个错误,上面写着
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
在我对问题的探索中,我将一些代码更改为.then(results => results.json())
为.then(results => results.text())
。 这向我显示了我的获取请求所获得的任何文本。 我发现它根本没有到达提供的 URL,而是返回了我的应用程序的主页(index.html,我认为位于“/”)。 奇怪的。
这是我的代码的删节版:
import React from "react";
const hardcoded_url =
"https://www.reddit.com/r/learnprogramming/new/.json?count=25&after=";
getJSON = () => {
fetch(this.hardcoded_url)
.then(results => results.json())
.then(data => console.log(data));
};
render() {
return (
// <react stuff>
)
}
我的console.log(data)
打印出来的实际上是我的 React 应用程序的index.html
:
<!DOCTYPE html>
<html lang="en">
<!--- blah blah --->
</html>
我什至可以在我的开发人员工具网络选项卡中看到请求发出。 对我来说,这看起来不对。 它注册为undefined
并在Network -> Headers -> General
下注册:
请求地址: http://localhost:3000/undefined
请求方式:GET
状态码:304 未修改
我试过谷歌搜索错误消息和javascript fetch url returns index.html
。 后者将我带到这个看起来很有希望的页面,但是将“代理”行添加到我的 package.json 中并没有帮助(具体来说,我添加了: "proxy": "http://localhost:3000"
)。 我也不认为这是凭据问题,因为我可以从浏览器访问我想要的 URL。
我不明白为什么这对我不起作用。 我正在为我自己的 Reddit 小克隆复制其他人的 github 项目中的代码形式。 他们的作品...
hardcoded_url
是一个常量而不是类变量。 通过 this.hardcoded_url 访问它是问题所在。
fetch(hardcoded_url)
是这里的正确方法。
this.hardcoded_url is undefined
,因此 fetch undefined
为相对于本地主机的 url,因此 API 为http://localhost:3000/undefined而不是实际的 url
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.