我有一个服务,它异步调用REST API。我有一个jQuery,它按预期工作,但我想用JS fetch重写它。但是,它似乎没有将正确的数据发布到服务器。我从服务器得到的所有回复都是"缺少参数:userId" 。
以下是我的工作jQuery:
$.ajax({
url: 'http:/myservice.com/users/delete',
data: { userId: myVar },
type:'post',
success: function(response) {
console.log(response);
}
});
我认为代码很简单:
fetch('http:/myservice.com/users/delete', {
method: 'post',
body: { userId: myVar }
}).then(function(response) {
return response.text()
});
如果我查看原始代码中的XHR请求,它实际上会发布表单数据。所以我试着改写:
fetch('http:/myservice.com/users/delete', {
method: 'post',
body: new FormData({ userId: myVar })
}).then(function(response) {
return response.text()
});
我还尝试了其他代码变体,例如将其作为硬编码字符串(userId=1337
)或使用JSON.stringify
发送。
我做错了什么?我不理解正确获取吗?还有什么我可以做的调试吗?
答案 0 :(得分:1)
建立身体确实需要一些修补。
请尝试以下代码:
var serialize = function (data) {
return Object.keys(data).map(function (keyName) {
return encodeURIComponent(keyName) + '=' + encodeURIComponent(data[keyName])
}).join('&');
};
fetch('http:/myservice.com/users/delete', {
method: 'post',
body: serialize({ userId: myVar })
}).then(function(response) {
return response.text()
});