我正在努力自学Angular,目前我正在处理从角度前端发送http请求的问题。
我正在成功发送POST请求,并且我也收到了正确的错误响应。返回的错误响应来自Laravel,基本上是JSON响应。
return Response::json(['message' => $validator->errors()], 422);
返回看起来像的东西,
{
"message": {
"first_name": ["The first name field is required."],
"surname": ["The surname field is required."],
"email": ["The email field is required."],
"school_name": ["The school name field is required."]
}
}
在我的角度模板中,我现在在控制器中有这个,
app.controller('signupController', function($scope, $http) {
console.log("...signup controller initialised...");
$scope.formData = {};
$scope.error = "";
$scope.processForm = function() {
console.log($scope.formData);
var postForm = $http.post('http://homestead.app/api/invites/create', $scope.formData);
postForm.success(function(data, status, headers, config) {
$scope.message = data;
});
postForm.error(function(data, status, headers) {
$scope.error = data;
console.log($scope.error);
});
}
});
在我的模板中,我形成了这样的条目,
<div class="form-group">
<label for="firstName" class="is-required">First Name</label>
<input type="text" class="form-control" id="firstName" name="first_name" ng-model="formData.firstname" ng-class="{'has-error': error.message.first_name}">
<div class="error__block">{{ error.message.first_name }}</div>
</div>
现在出错时,表单输入会分配has-error类,但错误块显示如下内容,
[&#34;需要名字字段。&#34;]
当我认为它会显示出类似的东西时,
首字母字段是必需的
我在角度端的laravel端做错了什么?
答案 0 :(得分:2)
从我看到你从laravel返回字段 first_name 字符串值的数组。这听起来不太好,不应该只是一个字符串吗?
如果没有, join first_name数组,您将从数组中的多个值中获取全名。
答案 1 :(得分:1)
我对Laravel一无所知,所以可能仍然有办法改变它,但你可以改变你的$http.success()
函数:
postForm.success(function(data, status, headers, config) {
$scope.message = data[0];
});
不是将$scope.message
设置为传入数组,而是抓取数组的第一个元素并使用它(索引0)。