Javascript 在POST请求中传递数据

Javascript 在POST请求中传递数据,javascript,ajax,reactjs,post,Javascript,Ajax,Reactjs,Post,我想在post请求中发布数据。我有一个像这样的登录表单 render(){ return ( <div className="LoginPage"> <div className="login-page"> <div className="form"> <form className="login

我想在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>
        );
    }
所以我现在包括了这样的数据

 "data": {
                "password": JSON.stringify(document.getElementById("password").value),
                "username": JSON.stringify(document.getElementById("username").value)
            }
但是api给了我一个400的错误,就像这样

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

但同时,如果我像这样传递数据,它就会工作

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

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

您应该删除这里的
JSON.stringify
调用,因为它们在值周围添加了不必要的双引号,使其无效:

"data": {
    "password": document.getElementById("password").value,
    "username": document.getElementById("username").value
}
因此,不是将值apurv作为密码发送,而是发送不是正确密码的“apurv”。

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

但有一个疑问。“数据”:{“密码”:“apurv”,“用户名”:“apurv”},我发送“apurv”只是作为密码。但这是有效的。为什么?因为您正确地发送了它:
“数据”:{“密码”:“apurv”,“用户名”:“apurv”}
。另一方面,JSON stringify做到了这一点:
“数据”:{“密码”:“apurv\”,“用户名”:“apurv\”}
。你能看出区别吗?