javascript - 格式化transformRequest - Angular 到 PHP

标签 javascript php angularjs

我正在尝试从我的 Angular 应用程序和 PHP 后端创建一个添加函数。我正在尝试解析我用 conversionRequest 发送到服务器的内容,但我不完全确定什么格式与 PHP 中的 $_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的控制台输出:

Imgur

最佳答案

你可以这样尝试:

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 中删除。

关于javascript - 格式化transformRequest - Angular 到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43816129/

相关文章:

javascript - 通过 Node.js mysql 查询的准备语句使用多个通配符

php - Custom Drupal 7 Field 只保存第一个字符

php - 使用PHP分配房间的算法

Javascript:如何将一个字符串文字包含到另一个字符串文字中?

angularjs - 如何设置带有日期的 Material 设计 slider

javascript - MobileFirst v8 和 bootstrap Angular JS v1.5.3 错误

Javascript 函数打开文件未被调用

javascript - JSON.parse() 不适用于 jQuery 数据对象

javascript - typesafe 使用 reactjs 和 typescript 选择 onChange 事件

php - 为什么在 codeIgniter 路由上使用 $1。