我正在尝试发送然后从服务器上的PHP获取数据,但我认为它不会发送数据。
我的js代码:
angular
.module('h2hApp', [])
.controller('mainCtrl', ['$scope', '$http', function(scope, http) {
scope.initGames = function() {
http({
method: 'POST',
url: 'apis.php',
data: {
url: someUrl
}
})
.success(function(data) {
console.log(data);
});
};
scope.initGames();
}]);
和我的PHP文件:
<?php
$url = $_POST['url'];
echo file_get_contents($url);
?>
我得到的唯一回应是该错误:
Notice: Undefined index: url in /my/path/apis.php on line 2
我使用 jQuery 使它工作,但使用 AngularJS 它似乎不起作用。我是 Angular 的新手,我读过一些其他类似的问题。我尝试了诸如添加标题和其他事情之类的事情,但没有任何效果。
你可以原谅你认为你的 PHP 脚本应该期待 $_POST
变量中的数据,因为将数据编码为查询字符串传统上一直是默认机制。
但是,默认情况下,Angular 将消息正文编码为 JSON 对象。 如前所述,您可以使用params
,但从长远来看,我认为在服务器端遵守会更灵活。 例如,您可以按如下方式读取和解码消息正文:
<?php
$data = json_decode( file_get_contents('php://input') );
echo $data->url;
它应该是"参数",而不是"数据"。请参阅 http://docs.angularjs.org/api/ng/service/$http#usage
一定要设置HTTP头,有点像这样:
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
有关使用 Post from AngularJS 到 PHP
http.post()
方法 -
试试这个代码 -
http.post('apis.php', {
url: someUrl
})
.success(function(data) {
console.log(data);
});