我尝试从jQuery.post转移到名为fetch
的默认功能以发出请求。我意识到,看起来相同的查询有不同的行为。
jQuery.post :
jQuery.post({
type: "POST",
url: '/core/comment/add',
data: {
type: "article",
identity: 1931,
body: "Some stuff"
}
}).done(function() {
console.log(arguments);
}).fail(function() {
console.log("fail");
});
取:
fetch('/core/comment/add', {
method: 'POST',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type':'application/json',
},
body: JSON.stringify({
type: "article",
identity: 1931,
body: "Some stuff"
})
}).then(function(response) {
console.log(response);
}).catch(function(e) {
console.log(e);
});
在jQuery.post
案例中,一切正常,但fetch
返回状态为404.我还尝试添加credentials: 'same-origin'
选项,尝试发送数据w / o {{ 1}}和标题,但没有改变 - $ _POST是空的。
那么有什么区别以及如何实现相同的行为?
答案 0 :(得分:0)
https://pastebin.com/yw9xj5ZD显示jQuery.post
已发送application/x-www-form-urlencoded
数据,因此要使用Fetch API执行相同操作,请使用以下代码:
fetch('/core/comment/add', {
method: 'POST',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type':'application/x-www-form-urlencoded',
},
body: "type=article&identity=1931&body=Some stuff"
})
}).then(function(response) {
console.log(response);
}).catch(function(e) {
console.log(e);
});
那是:
Content-Type
请求标头值更改为application/x-www-form-urlencoded
body
的字符串,格式为type=article&identity=1931&body=Some stuff