我是Anggularjs的新手。我有一个表单并将ng模型数组发送到php文件,我收到错误未定义的索引,不知道如何从php中的angularjs解析发送的数组。
html表单的一部分
<div class="form-group" >
<label>Street<span class="error">*</span></label><span ng-show="!userForm.street.$pristine && userForm.street.$invalid || (userForm.street.$touched && !userForm.street)" class="error">Must be a number</span>
<input type="text" id="strret" class="form-control" name="userForm.street" ng-model="userForm.street" required ng-value="userForm.street" />
</div>
<div class="form-group" >
<label>Tel<span class="error">*</span></label><span ng-show="!userForm.tel.$pristine && userForm.tel.$invalid || (userForm.tel.$touched && !userForm.tel)" class="error">Must be number</span>
<input type="text" class="form-control" name="userForm.tel" ng-model="userForm.tel" required ng-pattern="/^[0]{1,13}$/" ng-value="userForm.tel"/>
</div>
Angularjs在控制器内发布功能:
$http({
method :'POST',
url:'post.php',
data: $scope.userForm,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
.success(function(data){
alert(data);
}).error(function(err) {
alert(err);
});
我的问题是如何在PHP $ _POST []中使用userForm.street和userForm.tel ...在stackoverflow上有类似的问题,但是没有任何关于如何在php文件中执行此操作的示例。
答案 0 :(得分:1)
为了以编码格式发送数据,您需要将其序列化。
内部默认值是将其序列化为JSON
使用$httpParamSerializerJQLike
服务。
$http({
method :'POST',
url:'post.php',
data: $httpParamSerializerJQLike($scope.userForm),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success...
不要忘记注入使用中的服务或控制器
否则,如果使用$http
默认值将数据发送为application/json
,则需要使用file_get_contents('php://input')
访问数据,因为`$ _POST将为空
$data = json_decode(file_get_contents('php://input'));