在php中解析angularjs数组

时间:2016-03-16 11:08:59

标签: php angularjs forms

我是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文件中执行此操作的示例。

1 个答案:

答案 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'));