试图将 jquery AJAX 转换为 Fetch API,如何设置RequestHeader?
Posted
技术标签:
【中文标题】试图将 jquery AJAX 转换为 Fetch API,如何设置RequestHeader?【英文标题】:Trying to convert jquery AJAX to Fetch API, how to setRequestHeader? 【发布时间】:2018-04-26 09:31:44 【问题描述】:我有对 Wordpress API 的 jQuery AJAX 调用,我需要在 requestHeader 中设置 Nonce 以进行身份验证。
$.ajax(
url: '/wp-json/app/v1/get_data/',
method: 'POST',
beforeSend: function ( xhr )
xhr.setRequestHeader( 'X-WP-Nonce', NONCE ); // NONCE is global var
,
data: ,
).done(onSuccess);
然后我想将该代码转换为 Fetch API,所以我尝试了这个:
window.fetch('/wp-json/app/v1/get_data/',
method: 'POST',
headers:
'Content-Type': 'application/json',
'X-WP-Nonce': NONCE
,
body: ,
).then(onSuccess)
但是我得到 403 Forbidden 就好像我的 Nonce 没有被检测到一样。我不确定设置 requestHeader 是否正确。
我找不到太多关于 Fetch API 的信息,所以有人有这方面的经验吗?
谢谢
【问题讨论】:
【参考方案1】:我现在可以工作了,上面的答案没有用,我必须对身体数据进行字符串化
(async function fetchUsers()
var datas =
'title':'test'
const resOne = await fetch('http://localhost/elementor_barba/wp-json/wp/v2/posts/1',
method : 'POST',
headers :
'Content-Type': 'application/json',
'X-WP-Nonce' : universityData.nonce // here you used the wrong name
,
credentials: 'same-origin',
body:JSON.stringify(datas)
)
const dataOne = await resOne.json()
console.log(dataOne)
)()
【讨论】:
【参考方案2】:我通过在参数中添加credentials: 'same-origin'
解决了这个问题
window.fetch('/wp-json/app/v1/get_data/',
method: 'POST',
headers:
'Content-Type': 'application/json',
'X-WP-Nonce': NONCE
,
credentials: 'same-origin',
body: ,
).then(onSuccess)
【讨论】:
以上是关于试图将 jquery AJAX 转换为 Fetch API,如何设置RequestHeader?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaScript 中将 Ajax 转换为 Fetch API?
jQuery $.AJAX 替换为 JavaScript fetch - mvc4 方法参数始终为空
将 jquery ajax POST 请求更改为 fetch api POST
使用jQuery $ .ajax方法显示包含MySQL表数据的JSON [关闭]