如何通过React发送x-www-form-urlencoded请求?

时间:2019-06-12 11:31:35

标签: reactjs

static sendHelp() {
        const data = {
            data: {"AuthAD": "true"}
        };
        console.log(data);
        const config = {
            headers: {'content-type': 'application/x-www-form-urlencoded'}
        };
        return axios.post('http://kashkin:20880', data, {config}).then(
            response => response.data
        );
    }

当我使用它时,我有未经授权的回答401,并且不知道如何正确发送数据?

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://kashkin:20880/",
  "method": "POST",
  "headers": {
    "content-type": "application/x-www-form-urlencoded"
  },
  "data": {
    "AuthAD": "true"
  }
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

这是失眠症的代码,可以正常工作!如何在react(我的格式代码?)中使用它 when i use this.state.data it doesnt help to me

with ur method

2 个答案:

答案 0 :(得分:0)

{config},您正在将配置设置为以下形式的对象

{config} = { config: { headers: '...' }

直接传递configdata对象也是如此。

const data = {"AuthAD": "true"};
return axios.post('http://kashkin:20880', data, config)
            .then(response => response.data);

答案 1 :(得分:0)

直接来自axios文档:

  

Using application/x-www-form-urlencoded format

     

默认情况下,axios将JavaScript对象序列化为JSON。要改为以application/x-www-form-urlencoded格式发送数据,可以使用以下选项之一。

     

浏览器

     

在浏览器中,您可以按以下方式使用URLSearchParams API:

     
const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);
     

请注意,并非所有浏览器都支持URLSearchParams(请参阅caniuse.com),但是有polyfill可用(请确保填充全局环境)。

     

或者,您可以使用qs库对数据进行编码:

const qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));
     

或以另一种方式(ES6),

     
import qs from 'qs';
const data = { 'bar': 123 };
const options = {
  method: 'POST',
  headers: { 'content-type': 'application/x-www-form-urlencoded' },
  data: qs.stringify(data),
  url,
};
axios(options);
     

Node.js

     

在node.js中,您可以按以下方式使用querystring模块:

     
const querystring = require('querystring');
axios.post('http://something.com/', querystring.stringify({ foo: 'bar' }));
     

您还可以使用qs库。

因此,您的情况如下:

// import the `qs` module
import qs from 'qs';

// Then you can use `qs` with `axios` in that file
const data = {
  "AuthAD": "true"
};
const options = {
  method: 'POST',
  headers: { 'content-type': 'application/x-www-form-urlencoded' },
  data: qs.stringify(data),
  url: 'http://kashkin:20880'
};
axios(options)

注意:请记住,您必须首先安装qs软件包(通过运行npm install --save qs命令或首选软件包管理器的等效命令。)