Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用FetchAPI发布Axios中的数据和参数_Javascript_Fetch_Axios - Fatal编程技术网

Javascript 如何使用FetchAPI发布Axios中的数据和参数

Javascript 如何使用FetchAPI发布Axios中的数据和参数,javascript,fetch,axios,Javascript,Fetch,Axios,以以下Axios为例: axios.post(this.reportURL, reportData, { params: { param1: paramValue1, param2: paramValue2 }, }); 如何使用fetchapi做同样的事情?我看到参数是这样做的: fetch(this.reportURL, { method: "POST", body: "param1=paramValue1&param2=paramValue2",

以以下Axios为例:

axios.post(this.reportURL, reportData, {
  params: {
    param1: paramValue1,
    param2: paramValue2
  },
});
如何使用fetchapi做同样的事情?我看到参数是这样做的:

fetch(this.reportURL, {
  method: "POST",
  body: "param1=paramValue1&param2=paramValue2",
  headers: 
    {
      "Content-Type": "application/x-www-form-urlencoded"
    }

})
由于body键用于存储参数,我是否需要序列化整个reportData对象并将其连接到现有参数

我不明白为什么fetchapi使用body键作为参数


此外,这不是我自己的API,我无法更改预期的POST请求。

如果需要从哈希构造查询参数字符串,并且在站点上使用jQuery,可以执行以下操作:

var url=”http://www.abx.com?“+$.param({foo:bar”,baz:kuuq})
获取(url)

以下是fetch标准在其文档中建议的内容(另请参见whatwg/fetch#56中的讨论):

var url=新url(“https://geo.example.org/api"),
params={lat:35.696233,long:139.570431}
Object.keys(params.forEach(key=>url.searchParams.append(key,params[key]))
获取(url)。然后(…)

这要求浏览器实现url.searchParams。较旧的浏览器可能需要polyfill

请快速阅读,但希望能有所帮助


Src:

如果需要从散列中构造查询参数字符串,并在站点上使用jQuery,则可以执行以下操作:

var url=”http://www.abx.com?“+$.param({foo:bar”,baz:kuuq})
获取(url)

以下是fetch标准在其文档中建议的内容(另请参见whatwg/fetch#56中的讨论):

var url=新url(“https://geo.example.org/api"),
params={lat:35.696233,long:139.570431}
Object.keys(params.forEach(key=>url.searchParams.append(key,params[key]))
获取(url)。然后(…)

这要求浏览器实现url.searchParams。较旧的浏览器可能需要polyfill

请快速阅读,但希望能有所帮助

Src:

你可以
body:JSON.stringify({
param1:paramValue1,
param2:paramValue2
})

您可以这样做
body:JSON.stringify({
param1:paramValue1,
param2:paramValue2

})

看起来很接近,但在第二个示例中,当您发出POST请求时,参数通常会以JSON的形式出现在请求体上:

fetch(this.reportURL, {
  method: "POST",
  body: JSON.stringify({
    param1: paramValue1,
    param2: paramValue2
  })    
})

看起来很接近,但在第二个示例中,当您发出POST请求时,参数通常会以JSON的形式出现在请求体上:

fetch(this.reportURL, {
  method: "POST",
  body: JSON.stringify({
    param1: paramValue1,
    param2: paramValue2
  })    
})

您可以
reportData
中的片段提取到另一个对象中,并通过JSON将该片段传递给
fetch
。将其字符串化

Fetch还支持
FormData
,但这与我前面提到的对象方法没有太大区别

您可以将主体指定为以下内容:

  • 阵列缓冲器
  • ArrayBufferView(Uint8Array和friends)
  • Blob/文件
  • URLSearchParams
  • FormData

  • 您可以
    reportData
    中的片段提取到另一个对象中,并通过JSON将该片段传递给
    fetch
    。将其字符串化

    Fetch还支持
    FormData
    ,但这与我前面提到的对象方法没有太大区别

    您可以将主体指定为以下内容:

  • 阵列缓冲器
  • ArrayBufferView(Uint8Array和friends)
  • Blob/文件
  • URLSearchParams
  • FormData
  • 令人沮丧的是,
    fetch()。您只需将它们放在直接获取的URL中。这是一个争论点,您可以在GitHub上阅读:

    有几种方法可以模拟它:

    constURL=新url(“http://www.example.com");
    常量参数={
    福:“酒吧”,
    嘶嘶声:“嗡嗡声”
    };
    常数数据={
    更多:“数据”,
    “我”,
    想要:“去”,
    发送:“请”
    };
    Object.entries(params.forEach([k,v])=>url.searchParams.append(k,v));
    console.log(url);
    获取(url,{//url为http://www.example.com/?foo=bar&fizz=buzz
    方法:“张贴”,
    body:JSON.stringify(data)//实际的body
    });令人沮丧的是,
    fetch()
    并没有真正提供一种“干净”的方式来提供查询字符串URL参数。您只需将它们放在直接获取的URL中。这是一个争论点,您可以在GitHub上阅读:

    有几种方法可以模拟它:

    constURL=新url(“http://www.example.com");
    常量参数={
    福:“酒吧”,
    嘶嘶声:“嗡嗡声”
    };
    常数数据={
    更多:“数据”,
    “我”,
    想要:“去”,
    发送:“请”
    };
    Object.entries(params.forEach([k,v])=>url.searchParams.append(k,v));
    console.log(url);
    获取(url,{//url为http://www.example.com/?foo=bar&fizz=buzz
    方法:“张贴”,
    body:JSON.stringify(data)//实际的body
    
    });除非我误读了axios文档,否则它们是不同的。第一个参数将附加这些参数作为URL参数,即
    example.com?p1=foo&p2=bar
    。第二个将把主体附加为请求的实际主体,而不是作为URL的一部分。您正在尝试执行哪项操作。您无法
    从reportData中提取所需的片段并创建自己的对象以传递给
    获取
    ?您不能更改POST请求是什么意思?@zero298我正在尝试两者兼而有之,因为API需要参数和JSON数据。@Akrion我可以创建自己的对象,我想我想知道您的建议是否确实是正确的方法。除非我误读了axios文档,否则它们是不同的。第一个参数将附加这些参数作为URL参数,即
    example.com?p1=foo&p2=bar
    。第二个将把主体附加为请求的实际主体,而不是作为URL的一部分。你想做哪一个。你不能
    extra