Javascript等待获取具有params数量的GET请求

时间:2016-11-30 15:17:44

标签: javascript react-jsx

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错误而失败......

3 个答案:

答案 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