2016-09-21 43 views
2

我有「格式化」問題的json後JSON格式的錯誤,當我使用POST方法

我有一個HTML表單,角像這樣

<form name="signupForm" ng-submit="processForm()"> 
    <input name="names" ng-model="userInfo.names" type="text" class="form-control" required> 
    <input name="lastName" ng-model="userInfo.lastName" type="text" class="form-control" required> 
    <input name="city" ng-model="userInfo.personals.city" type="text" class="form-control" required> 
    <input name="cellNumber" ng-model= "userInfo.personals.cellNumber" type="text" required> 
    <select multiple chosen class="chosen-select" ng-model="userInfo.personals.area"> 
     <option value="1">OP1</option> 
     <option value="2">OP2</option> 
     <option value="3">OP3</option> 
    </select> 
    <button type="submit" class="btn btn-success" ng-disabled="signupForm.$invalid">Post</button> 
</form> 

我控制器

發送
function mainCTRL ($scope, $rootScope, $timeout, notify, $http) { 
    $scope.processForm = function() { 
     $http.post('/register', $scope.userInfo).success(function(res){console.log(res);}); 
    }; 
} 

我的問題是,當我的API獲取JSON,它看起來像

{ 
    names: "name", 
    lastname: "last", 
    personals: { 
     city: "city", 
     cellNumber: "12345", 
     area: ['1','2'] 
    } 
} 

我嘗試將它保存在一個模型

router.post('/register', function(req, res, next){ 
    console.log(req.body); 
    var perfil = new Perfiles(req.body); 
    perfil.save(function(err, perfil){ 
     if(err){return next(err);} 
      res.json(perfil); 
    }); 
}); 

但它告訴我一個500錯誤。如果我用郵差請求格式是diferent發個帖子,並提供保存

{ 
     names: "name", 
     lastname: "last", 
     personals.city: "city", 
     personals.cellNumber: "12345", 
     personals.area: ['1','2'] 
     } 
    } 

enter image description here

請告訴我是這兩種方法之間的性差異?

回答

0

如您所知,有兩種數據類型的請求:表單類型和json類型。

因此,您需要在發佈時確定請求數據的類型。

$http({ 
    data: $scope.userInfo, 
    method: "POST", 
    url: "/register", 
    headers: { 
     'content-type': "application/x-www-form-urlencoded" 
    }, 
    dataType: 'JSON', 
}).then(function mySucces(res) { 
    console.log(res); 
}); 

爲什麼郵差的結果是不同的網站之一就是,你已經錯過了郵差的數據類型選擇的原因。

請嘗試選擇類型如下並重新發送。 enter image description here

提交時,您可以從html表單中獲取json值。

<form name="signupForm" ng-submit="processForm(userInfo)"> 
    <input name="names" ng-model="userInfo.names" type="text" class="form-control" required> 
    <input name="lastName" ng-model="userInfo.lastName" type="text" class="form-control" required> 
    <input name="city" ng-model="userInfo.personals.city" type="text" class="form-control" required> 
    <input name="cellNumber" ng-model= "userInfo.personals.cellNumber" type="text" required> 
    <select multiple chosen class="chosen-select" ng-model="userInfo.personals.area"> 
     <option value="1">OP1</option> 
     <option value="2">OP2</option> 
     <option value="3">OP3</option> 
    </select> 
    <button type="submit" class="btn btn-success" ng-disabled="signupForm.$invalid">Post</button> 
</form> 

....

$scope.processForm = function(userInfo) { 
    console.log(userinfo); 
}