【发布时间】:2018-02-15 21:27:16
【问题描述】:
-- 情况背景--
我正在为我们的商业营销策略服务 blah blah blah 的客户制作电子表格注册...
表格已完成,看起来很棒。现在我需要将它连接到我们的业务用来保存/排序/查询/等提交信息的服务的现有 API。
我是一名非常初级的开发人员,API 非常复杂。我只是想确保我的 ES6/javascript 工作正常。 ajax 调用正在工作,我的代码中没有错误等。所以为了测试事情,似乎最简单的事情就是制作一个简单的本地服务器,这样我就可以测试我的调用,让一切正常,然后我开始经历大量API 文档并将其正确连接到我们的服务。第一个电话似乎工作正常。但是我无法让我的小宝贝服务器正确地“响应”一些静态信息来解析。我主要是一名前端开发人员,但我现在痴迷于解决这个小服务器问题......所以非常感谢您的帮助。
-- 获取请求--
fetch('http://localhost:4000/send-zip')
.then(
(response) => {
response.json(),
console.log('begin fetch to local server'),
console.log(response),
populate_store_selector(response)
})
.catch(
(error)=> console.log('basic fetch request failed' + error)
)
-- 万一有人问的其他功能--
(它只是为了迭代和填充一个 html 输入类型=“选择”)
function populate_store_selector(arg) {
for (i of arg) {
let new_option = document.createElement('option')
new_option.innerHTML = arg[i]
select_shop.appendChild(new_option)
}
}
-- 我的小宝贝服务器--
const express = require('express')
const server = express()
server.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
server.get('/send-zip', function (req, res) {
res.send({ "options": ['option1', 'option2', 'option3'] })
})
server.listen(4000, () => console.log('mock server listening on port 4000!'))
服务器工作得很好,除了我永远无法让它返回一个 JSON 对象之外,它的工作是否正常 :( 到目前为止,我已经尝试了很多东西。老实说,这并不重要,因为我在前端的请求工作得很好,但我太着迷了,现在不能放手......
-- console.log() 在浏览器中显示的内容--
begin fetch to local server
main.js:104
Response {type: "cors", url: "http://localhost:4000/send-zip", redirected: false, status: 200, ok: true, …}body: (...)bodyUsed: trueheaders: Headers {}ok: trueredirected: falsestatus: 200statusText: "OK"type: "cors"url: "http://localhost:4000/send-zip"__proto__: Response
main.js:108
basic fetch request failedTypeError: arg is not iterable
【问题讨论】:
-
因为
arg是Response对象,而不是数据。 -
需要通过
populate_store_selector(response["options"])进行迭代。 -
我猜如果有帮助,服务器应该响应一个 json 类型的标头。
-
@MikeMcCaughan 我明白你在说什么,但我的问题是(除非我只是想念它)我的服务器没有发回任何数据。
-
感谢大家的努力,我理解为什么每个人都想跳到你不能遍历响应对象,它需要 response.someValue 但我试图在问题中解释从来没有这个问题。下面的答案给了我我需要的东西。我没有正确解析响应对象,这解释了为什么我永远找不到我期望的值。不过,我非常感谢大家的时间和努力,干杯!
标签: javascript node.js ajax express fetch