Javascript 将transformRequest格式化为PHP

Javascript 将transformRequest格式化为PHP,javascript,php,angularjs,Javascript,Php,Angularjs,我正在尝试从Angular应用程序和PHP后端创建一个add函数。我试图用transformationRequest解析发送给服务器的内容,但我不完全确定哪种格式与PHP中的$\u POST[]匹配-有人知道这里出了什么问题吗?对象发送到服务器,但返回错误状态 app.js: $scope.addUser = function(){ var data = $scope.tempUserData; $http({ method: 'POST',

我正在尝试从Angular应用程序和PHP后端创建一个add函数。我试图用transformationRequest解析发送给服务器的内容,但我不完全确定哪种格式与PHP中的$\u POST[]匹配-有人知道这里出了什么问题吗?对象发送到服务器,但返回错误状态

app.js:

$scope.addUser = function(){
    var data = $scope.tempUserData;

    $http({
               method: 'POST',
               url: 'http://localhost:8080/sns/addUser.php',
               data: data,
               headers: {
                        'Content-Type': 'application/x-www-form-urlencoded'
               },
               transformRequest: function (data) {
                   transformedData="";
                   keys=Object.keys(data);values=Object.values(data);
                   for (i in keys)
                        transformedData+=keys[i]+"="+values[i]+"&"; 
                   return transformedData;
             }
            }).success(function(response){
                if(response.status == 'OK'){
                $scope.users.push({
                    id:response.data.id,
                    name:response.data.name,
                    email:response.data.email,
                    phone:response.data.phone,
                    group:response.data.group
                });
            }
            $scope.tempUserData = {};
        });
};
addUser.php:

<?php
include 'DB.php';
$db = new DB();
$tblName = 'members';
            if(!empty($_POST['data'])){
                $userData = array(
                    'name' => $_POST['data']['name'],
                    'email' => $_POST['data']['email'],
                    'phone' => $_POST['data']['phone'],
                    'group' => $_POST['data']['group']
                );
                $insert = $db->insert($tblName,$userData);
                if($insert){
                    $data['data'] = $insert;
                    $data['status'] = 'OK';
                    $data['msg'] = 'User data has been added successfully.';
                }else{
                    $data['status'] = 'ERR';
                    $data['msg'] = 'Some problem occurred, please try again.';
                }
            }else{
                $data['status'] = 'ERR';
                $data['msg'] = 'Some problem occurred, please try again.';
            }
echo json_encode($data);
exit;
控制台输出和更新的转换请求:


您可以这样尝试:

transformRequest:function(obj) {
            var str =[];
    for(var p in obj){
str.push(encodeURIComponent(p) +"=" + encodeURIComponent(obj[p]))

                }
        return str.join("&");
            }

你应该用then代替success。不推荐使用的.success和.error方法已从AngularJS 1.6中删除。

我用你的transformRequest替换了我的transformRequest,但我仍然从PHP中收到相同的错误-顺便说一句,谢谢关于success方法的提示。@StolenSheep你能在chrome开发工具中打开tab network吗,itI中发送的post img数据将输出的img添加到上述原始post中。它的状态为“OK”,表示数据已经插入,但当我查看数据库时,它显然没有被添加,并且应该用于将新条目推送到用户列表的响应也没有定义。老实说,我迷路了。。!我不确定你的php代码。但用angular编写的代码似乎很好。以及用户因丢失数据而未被罚款的原因。如果使用,则应更改为id:response.data.data.id@StolenSheep