NodeJs 在 http 和 fetchjsonp 之间处理 json
Posted
技术标签:
【中文标题】NodeJs 在 http 和 fetchjsonp 之间处理 json【英文标题】:NodeJs handling json between http and fetchjsonp 【发布时间】:2018-06-30 09:14:32 【问题描述】:我使用 fetch-jsonp 的应用程序无法从我通过简单 http 模块提供服务的站点读取 JSON。我收到一个错误:“Uncaught SyntaxError: Unexpected token :”,然后是一个超时错误。
我正在尝试 ReactJS,所以把这个 react 组件放在一起
import React, Component from 'react';
import fetchJsonp from 'fetch-jsonp';
var data = 'remote':, 'local': ;
var fetched= false;
class FastTable extends Component
loadData(url,element)
return fetchJsonp(url)
.then(function(response)
return response.json(); )
.then((responseJson) =>
data[element] = responseJson;
this.setState(data);
return responseJson;
)
.catch((error) =>
console.error(error);
);
render()
if (!fetched)
this.loadData('https://jsonplaceholder.typicode.com/posts/1','remote');
this.loadData('http://localhost','local');
fetched=true;
return (
<div><pre>JSON.stringify(data, null, 2) </pre></div>
);
export default FastTable;
它使用 fetchJsonp 从一个有效的测试网站获取 JSON 数据集,然后从我的 http 测试网站获取一个无效的数据集。
测试服务器代码如下:
var http = require('http');
http.createServer(function (req, res)
var result =
'Bob':'Likes cheese'
;
res.writeHead(200, 'Content-Type': 'application/json');
res.write(JSON.stringify(result));
res.end();
).listen(80);
我还从我们项目中的其他 JSON 服务器读取的结果好坏参半。
为什么 fetch-jsonp 没有从我的测试站点读取数据?我应该以其他方式读取这些数据吗?
【问题讨论】:
【参考方案1】:您很可能正在调用不支持的 JSON API JSONP。不同之处在于 JSON API 使用类似的对象进行响应 "data": 123 执行时会抛出上述错误 功能。另一方面,JSONP 会用一个函数来响应 包装对象,如 jsonp_123132(data: 123)。
如果您想使用 JSON API,请尝试使用 axios 或 supergent npm。
【讨论】:
以上是关于NodeJs 在 http 和 fetchjsonp 之间处理 json的主要内容,如果未能解决你的问题,请参考以下文章