繁体   English   中英

在POST请求中传递数据

[英]Passing data in POST request

我想在POST请求中发布数据。 我有一个看起来像这样的登录表单

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>
        );
    }

我在handleLoginButtonClick中发出POST请求

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')
        });

所以我目前正在包含这样的数据

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

但是api给我这样的400错误

在此处输入图片说明

但是同时如果我像这样传递数据,那么它将起作用

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

这里有什么问题。 两者应该相同,对吧?

您应在此处删除JSON.stringify调用,因为它们会在值周围添加不​​必要的双引号,从而使它们无效:

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

因此,不是发送值apurv作为密码,而是发送不是正确密码的"apurv"

“ getElementById()。value”的返回值是字符串,但是“ JSON.stringify()”用于将对象转换为字符串。 这意味着您正在尝试将字符串转换为字符串。 这就是为什么发生错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM