我正在尝试从我的 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的控制台输出:
最佳答案
你可以这样尝试:
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/