2016-04-06 197 views
3

我正在将angularjs与nodejs集成,现在我在browser.http 400错误的requset中发生错误。我想知道它是前端错误还是后端错误,我需要解决方案。POST 400在angularjs中的错误请求

register.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._][email protected][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

$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; 
     } 
    }); 
}; 
+0

你必须张贴代码的人,我们没有什么可去了。欢迎来到SO – JordanHendrix

+0

400错误请求由服务器发送,因为请求格式无效。 –

+0

你有一个空白的网址,是否正确? –

回答

4

根据维基百科的List of HTTP status codes

400错误的请求

服务器由于明显的客户端错误(例如格式错误的请求语法,无效的请求 消息成帧或欺骗性请求路由选择)而无法处理或不会处理该请求。

通俗地说,data无效:

var data = { 
    "user" : { 
    "name": user.name, 
    "email": user.email, 
    "phone": "+91"+ user.phone, 
    "password": user.password, 
    "address": user.address 
    } 
}; 

当服务器尝试处理data它检测到data是无效的,并发送400

这里有一些可能原因:

  • data缺少必要的值
  • data.phone无效
  • data.address无效
  • data.password是无效的(也许是太虚弱... ?)
  • 一个重要的要求header是missi ng

您应该检查data的格式是否符合服务器的要求。

您还应该检查响应主体以查看它是否包含更具体的错误。

+0

数据是有效的,因为我得到了名称,电子邮件,电话,地址的确切输出。现在我得到一个错误密码字段丢失。 – BalaDev

+0

@BalaDev我用更多的细节更新了我的答案。我希望有所帮助。 –

+0

是的。现在我得到了答案。它的工作完美。感谢你@ @ alex booker – BalaDev

0

不知怎的,我解决了这个问题,通过改变

data: {} 

params: {}