[英]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.