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