在POST请求中传递数据

时间:2017-01-20 10:54:06

标签: javascript ajax reactjs post

我想在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这样的错误

enter image description here

但与此同时,如果我传递这样的数据,那么它可以正常工作

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

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

2 个答案:

答案 0 :(得分:6)

您应该删除JSON.stringify这里的"data": { "password": document.getElementById("password").value, "username": document.getElementById("username").value } 次来电,因为他们会在值周围添加不​​必要的双引号,使其无效:

apurv

因此,您不会发送值"apurv"作为密码,而是发送CAST(Column AS TIMESTAMP(0)) 密码不正确的密码。

答案 1 :(得分:1)

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