在angular im中使用$http.post
将id发送到php脚本,以便将此id用于mysql请求。
这是我的控制者:
function ProjectDetailsCtrl($scope, $http, $timeout, getGoodIdProjectDetails) {
$scope.idProjectDetails = getGoodIdProjectDetails.getId(); //Getting id project
$scope.$emit('LOAD')
$scope.url = 'scripts/findProjectDetails.php';
$http.post($scope.url, { "idProject" : $scope.idProjectDetails}).
success(function(data, status) {
$scope.projectDetails = {};
$scope.projectDetails.details = data;
$scope.$emit('UNLOAD')
})
.
error(function(data, status) {
$scope.data = data || "Request failed";
$scope.status = status;
});
}
idProjectDetails
是一个数字。
然后是Php脚本:
<?php
$idProject = json_decode($_POST['idProject']);
Php脚本返回$idProject
未定义。
你能帮我解决这个问题吗?
编辑:我试过这种方式,但我的应用程序崩溃了:
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
$http({
method: 'POST',
url: 'scripts/findProjectDetails.php',
data: "idProject" : $scope.idProjectDetails
}).success(function(data, status) {
$scope.projectDetails = {};
$scope.projectDetails.details = data;
console.log(projectDetails.details);
$scope.$emit('UNLOAD')
})
.
error(function(data, status) {
$scope.data = data || "Request failed";
$scope.status = status;
});
使用第一个示例,在Chrome控制台中,&#34;请求playload&#34;包含这个:{idProject:1}
idProject:1
所以我假设我的变量是通过php脚本正确传递的?
答案 0 :(得分:0)
AngularJS的新手之间存在很多混淆,为什么$ http服务速记函数($ http.post()等)似乎不能与jQuery等价物(jQuery.post()等交换使用。)区别在于jQuery和AngularJS如何序列化和传输数据。从根本上说,问题在于您选择的服务器语言本身无法理解AngularJS的传输...默认情况下,jQuery使用Content-Type传输数据:x-www-form-urlencoded和熟悉的foo = bar&amp; baz = moe序列化。然而,AngularJS使用Content-Type:application / json和{&#34; foo&#34;:&#34; bar&#34;,&#34; baz&#34;:&#34; moe&#34传输数据; JSON序列化,遗憾的是一些Web服务器语言 - 特别是PHP - 本身不会反序列化。
具体来说,你的$ _POST变量是空的!
要解决这个问题还有2个解决方案:
我还没有在这里发明任何东西,只是链接...... 希望它能帮到你。