当我使用$http.get
我的代码有效时,但如果我使用$ http.post,我永远不会获取请求.php文件的参数。
这是服务功能:
TestPanel.service('MySampleService', function ($http, $q) {
this.getAllPosts = function () {
var def = $q.defer();
$http.post('/data/AJAXRequest.php', 'mydata=1&abcd=2').success(function (data) {
if (data == null)
def.reject('ERROR: DATA IS NULL');
else if (data.HasError)
def.reject('ERROR: ' + data.Message);
else
def.resolve(data);
}).error(function () {
def.reject('ERROR: Sorry, unable to complete your request.');
});
return def.promise;
}
});
和控制器功能:
TestController.controller('PostCtrl', ['$scope', '$http', 'MySampleService',
function ($scope, $http, MySampleService) {
function FetchPostsList() {
MySampleService.getAllPosts().then(function (data) {
$scope.lstPosts = data.ResponseData;
$scope.totalRecords = data.totalRecords;
console.info('DATA=' + $scope.lstPosts);
},
function (err) {
console.info('err=' + err);
});
}
FetchPostsList();
}
]);
和 我的AJAXRequest.php文件
<?php
var_dump($_POST)
?>
如果我使用 $ http.post()
输出:
array (size=0)
empty
如果我使用 $ http.get() 我的输出是:
array (size=2)
'mydata' => string '1' (length=1)
'abcd' => string '2' (length=1)
我检查了FireBug工具中的帖子,它将数据发送到我的php文件。但是php文件没有参数。
如果我使用 $。ajax 或 $。发布我的代码工作,它会给出回复。
答案 0 :(得分:4)
如果您在标题中指定内容类型该怎么办,具体如下:
$http({
method: 'POST',
url: '/data/AJAXRequest.php',
data: { mydata: 1, abcd: 2 },
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(....);
从这个问题中找到与PHP有关的评论:AngularJs $http.post() does not send data
似乎Angular默认发送为application / json,这可能会混淆PHP。
答案 1 :(得分:3)
我遇到了同样的问题,但我发现角度http post方法没有问题,问题就在于我试图获取帖子数据。
META-INF/MANIFEST.MF
我使用此代码从角度获取发布的数据,其工作就像魅力
答案 2 :(得分:2)
发布这样的数据:
$http.post('/data/AJAXRequest.php', { mydata: 1, abcd: 2 })
答案 3 :(得分:0)
$http({
method: 'POST',
url: 'http://mtapi.azurewebsites.net/api/sectiontype',
dataType: 'json',
data: {SectionTypeId:0, Name: $scope.message},
headers: { 'Content-Type': 'application/json; charset=UTF-8' }
}).success(function (data) {
alert(data);
}).error(function (data) {
alert(data);
});
标题必须添加到数组的末尾,否则它将无效。