Javascript 在POST请求中传递数据
我想在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
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\”}
。你能看出区别吗?