$http和PHP
我无法使以下代码正常工作$http和PHP,php,angularjs,Php,Angularjs,我无法使以下代码正常工作 <input type="text" ng-model="name" > <button ng-click="send(name);">SEND</button> angular.module('myapp', []). controller('MyController', ['$scope','$http', function ($scope,$http) { $scope.name='Jim'; $scope
<input type="text" ng-model="name" >
<button ng-click="send(name);">SEND</button>
angular.module('myapp', []).
controller('MyController', ['$scope','$http', function ($scope,$http) {
$scope.name='Jim';
$scope.send=function() {
return $http({
method: 'POST',
data:{server:'Hi'},
url: 'test.php',
dataType: 'json'
}).then(function(data){console.log(data)},function(data){console.log('failure')});
};
}]);
通过按下SEND按钮,我成功地获得$http返回:Object{data:Jim,status:200,config:Object,statusText:OK}。为什么数据等于该对象,为什么不将“Hi”传递给PHP?
请找个人帮忙。我要发疯了 可能是因为在PHP脚本中,您以错误的方式读取了请求主体,请尝试:
<?php
header("Content-Type: application/json");
$entityBody = file_get_contents('php://input');
$request = json_decode($entityBody);
$request->server .= ' Jim';
echo json_encode($request);
?>
可能是因为在PHP脚本中,您以错误的方式读取了请求主体,请尝试:
<?php
header("Content-Type: application/json");
$entityBody = file_get_contents('php://input');
$request = json_decode($entityBody);
$request->server .= ' Jim';
echo json_encode($request);
?>
我几天前才遇到这个问题。Angular$http不像php所期望的那样为POST序列化数据,我也不认为内容类型设置正确。如果希望php按照预期获得请求变量$POST,而不必从php://input,您需要序列化post数据并确保内容类型正确。这就是我的工作
$http({
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
},
data: formatPostData( {server:'Hi'} ),
url: 'test.php',
dataType: 'json'
})
用于序列化post数据的函数如下所示
function formatPostData( args ) {
var postString = '';
angular.forEach( args, function(v, k){
postString += k + '='+encodeURIComponent(v)+'&';
})
return postString.slice(0, -1);
}
我几天前才遇到这个问题。Angular$http不像php所期望的那样为POST序列化数据,我也不认为内容类型设置正确。如果希望php按照预期获得请求变量$POST,而不必从php://input,您需要序列化post数据并确保内容类型正确。这就是我的工作
$http({
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
},
data: formatPostData( {server:'Hi'} ),
url: 'test.php',
dataType: 'json'
})
用于序列化post数据的函数如下所示
function formatPostData( args ) {
var postString = '';
angular.forEach( args, function(v, k){
postString += k + '='+encodeURIComponent(v)+'&';
})
return postString.slice(0, -1);
}