我有一些参数要通过表单编码发送到我的服务器:

{
    'userName': '[email protected]',
    'password': 'Password!',
    'grant_type': 'password'
}

我像这样发送我的请求(目前没有参数)
var obj = {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  },
};
fetch('https://example.com/login', obj)
  .then(function(res) {
    // Do stuff with result
  });

如何在请求中包含表单编码参数?

最佳答案

您必须自己将 x-www-form-urlencoded 有效载荷放在一起,如下所示:

var details = {
    'userName': '[email protected]',
    'password': 'Password!',
    'grant_type': 'password'
};

var formBody = [];
for (var property in details) {
  var encodedKey = encodeURIComponent(property);
  var encodedValue = encodeURIComponent(details[property]);
  formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch('https://example.com/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
  },
  body: formBody
})

请注意,如果你使用的(足够现代)浏览器fetch,而不是作出 react 原住民,您可以改为创建一个 URLSearchParams 对象和用途,作为 body ,因为Fetch Standard states如果bodyURLSearchParams对象,那么它应该被序列化如 application/x-www-form-urlencoded 。但是,您不能在 React Native 中执行此操作,因为 React Native does not implement URLSearchParams

关于javascript - 如何使用 Fetch 发布 x-www-form-urlencoded 请求?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35325370/

10-16 01:42