weixin_33713707 2017-01-20 10:54 采纳率: 0%
浏览 318

在POST请求中传递数据

I want to post data in the POST request. I have a login form which looks like this

render(){
        return (
            <div className="LoginPage">
                <div className="login-page">
                    <div className="form">
                        <form className="login-form">
                            <input id="username" type="username" placeholder="username"/>
                            <input id="password" type="password" placeholder="password"/>
                            <p className="message">Not registered? <a href="#">Request Username and Password</a></p>
                        </form>
                        <button onClick={this.handleLoginButtonClick.bind(this)}>login</button>
                    </div>
                </div>
            </div>
        );
    }

I am making a POST request in handleLoginButtonClick

handleLoginButtonClick() {
        let token;
        var settings = {
            "async": true,
            "crossDomain": true,
            "url": "https://trigger-backend.appspot.com/auth/login/",
            "method": "POST",
            "credentials": 'include',
            "headers": {
                "content-type": "application/x-www-form-urlencoded",
            },
            "data": {
                "password": JSON.stringify(document.getElementById("password").value),
                "username": JSON.stringify(document.getElementById("username").value)
            },
            success: function( data, textStatus, jQxhr ){
               // alert("success");
            },
        }

        $.ajax(settings).done((response) => {

            token = JSON.stringify(response.auth_token)
            this.context.router.push('/app')
        });

So I am currently including the data like this

 "data": {
                "password": JSON.stringify(document.getElementById("password").value),
                "username": JSON.stringify(document.getElementById("username").value)
            }

But api gives me a 400 error like this

enter image description here

But at the same time if I pass the data like this then it works

"data": {
                "password": "apurv",
                "username": "Apurv"
            },

what is the problem here. Both should be same, right?

  • 写回答

2条回答 默认 最新

  • weixin_33743248 2017-01-20 10:57
    关注

    You should remove the JSON.stringify calls here as they are adding unnecessary double quotes around the values making them invalid:

    "data": {
        "password": document.getElementById("password").value,
        "username": document.getElementById("username").value
    }
    

    So instead of sending the value apurv as password you are sending "apurv" which is not the correct password.

    评论
  • weixin_33691817 2017-01-20 11:08
    关注

    the return value of "getElementById().value" is string, but "JSON.stringify()" is for converting object into string. that means you are trying to convert string to string. that's why the error occurred.

    评论

报告相同问题?

悬赏问题

  • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
  • ¥15 有没有哪位厉害的人可以用C#可视化呀
  • ¥15 可以帮我看看代码哪里错了吗
  • ¥15 设计一个成绩管理系统
  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 代码已写好,求帮我指出错误,有偿!
  • ¥15 matlab+波形匹配算法