React JSX项目。
我正在尝试执行等待获取具有多个参数的GET请求,因Uncaught SyntaxError: Unexpected identifier
错误而失败。
在与Postman执行相同的请求时,它工作正常。
我有一些语法问题。我做错了什么?
首先,我正在将uri初始化为适当的值。
其次,我正在准备GET选项:
var options = (payload) => {
return {
method: 'GET',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
param: JSON.stringify(payload) //payload is {domainName: "idoidoido.info"}
};
};
然后,等待获取:
const response = await fetch(uri, options(param));
而且,它因Uncaught SyntaxError: Unexpected identifier
错误而失败......
答案 0 :(得分:1)
我假设fetch
的第二个参数是一个对象,但是你的options
是一个函数,必须用有效负载调用,所以我认为你的代码应该是< / p>
const response = await fetch(uri, options(somePayload));
答案 1 :(得分:0)
嗯,首先,我希望你使用像BabelJS这样的转录程序,否则目前99%的目标会失败。
您的代码看起来很好。由于fetch
会返回一个承诺,await
可以处理它。但您必须确保await
语句始终位于async function
声明中。否则会引发错误。
因此,请确保您的主叫行具有类似
的结构async function getData( uri, options ) {
const response = await fetch(uri, options);
}
答案 2 :(得分:0)
成功解决了这个问题。看起来查询参数不能成为获取GET请求的一部分。
通过事先使用URI.js准备请求网址来解决此问题。
所以,选项:
const options = () => {
return {
method: 'GET',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
credentials: 'same-origin'
};
};
然后,等待获取:
const URI = require('urijs');
const request = new URI(uri).addSearch(params).toString();
const response = await fetch(uri, options());
addSearch(params)
很好地将params附加到网址:
URI("?hello=world")
.addSearch("hello", "mars")
// -> ?hello=world&hello=mars
.addSearch({ foo: ["bar", "baz"] })
// -> ?hello=world&hello=mars&foo=bar&foo=baz