2016-04-06 192 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: {}