Javascript 在 angularjs 中 POST 400 错误请求
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/36442007/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
POST 400 bad request in angularjs
提问by BalaDev
I am integrating an angularjs with nodejs now i got an error in browser.http 400 bad requset.I want to know is it front end error or back end error and i need solution.
我正在将 angularjs 与 nodejs 集成,现在我在 browser.http 400 bad requset 中出现错误。我想知道是前端错误还是后端错误,我需要解决方案。
register.html
注册.html
<form class="register-form" name="myRegisterForm" ng-hide="login" ng-submit="register(user)" novalidate>
<input type="text" placeholder="Name" ng-model="user.name" name="username" minlength="5" maxlength="25"/>
<span style="color:red" class="error" ng-show="myRegisterForm.username.$error.minlength">Given Name should be above 5 letters.</span><br/>
<input type="text" placeholder="Phone number" ng-model="user.phone" name="phonenum"
minlength="10" maxlength="10" ng-pattern="/^[0-9-]*$/" required/>
<span style="color:red" ng-style="{'padding-top':'2px'}" ng-show="myRegisterForm.phonenum.$error.pattern">Please enter numbers only.</span>
<span style="color:red" class="error" ng-show="myRegisterForm.phonenum.$error.minlength">Phone number must be 10 digits .</span><br/>
<input type="text" name=email placeholder="Email address" ng-model="user.email"
ng-pattern="/^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/" required/>
<span style="color:red" ng-style="{'padding-top':'2px'}" ng-show="myRegisterForm.email.$error.pattern">Please enter correct mail id</span><br/>
<input type="password" placeholder="Password" ng-model="user.password" minlength="8" maxlength="16"/>
<input type="password" placeholder="Confirm password" ng-model="user.cpassword" minlength="8" maxlength="16"/>
<span style="color:red" ng-style="{'padding-top':'2px'}" ng-show="user.password !== user.cpassword">Password is not match</span>
<textarea placeholder="Address" ng-model="user.address"></textarea>
<input type="submit" value="SIGN UP" />
<p class="message">Already registered? <p></form>
register.js
注册.js
$scope.register = function (user) {
var data = {
"user" : {
"name": user.name,
"email": user.email,
"phone": "+91"+ user.phone,
"password": user.password,
"address": user.address
}
};
$http({
method: 'POST',
url: '',
headers: {'Content-Type': 'application/json'},
data: data
}).then(function successCallback(response) {
if (response.data) {
sharedServices.set(response.data);
$location.path('/login');
}
console.log(response);
}, function errorCallback(response) {
if (response) {
$scope.message = response.data;
}
});
};
回答by Alex Booker
According to Wikipedia's List of HTTP status codes:
根据维基百科的HTTP 状态代码列表:
400 Bad Request
The servercannot or will not process the request due to an apparent client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).[36]
400 错误请求
该服务器不能或不会对请求处理由于表观客户端错误(例如,恶意请求语法,无效请求消息成帧或欺骗性请求路由选择)。[36]
In layman's terms, data
is invalid:
通俗地说,data
是无效的:
var data = {
"user" : {
"name": user.name,
"email": user.email,
"phone": "+91"+ user.phone,
"password": user.password,
"address": user.address
}
};
When the server tries to process data
it detects that data
is invalid and sends a 400
.
当服务器尝试处理时,data
它检测到data
无效并发送400
.
Here are some possiblecauses:
以下是一些可能的原因:
data
is missing a required valuedata.phone
is invaliddata.address
is invaliddata.password
is invalid (maybe it's too weak...?)- An important request
header
is missing
data
缺少必需的值data.phone
是无效的data.address
是无效的data.password
无效(也许它太弱了......?)header
缺少一个重要的请求
You should check that the format of data
matches what the server expects.
您应该检查格式是否data
与服务器期望的匹配。
You should also check the response body to see if it contains a more specific error.
您还应该检查响应正文以查看它是否包含更具体的错误。
回答by Jeffrey Roosendaal
Somehow, I solved this issue by changing
不知何故,我通过改变解决了这个问题
data: {}
to
到
params: {}