我正在尝试发送,然后在我的服务器上从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的新手,我也读过其他一些问题。我尝试过添加标题和其他内容,但没有任何效果。
答案 0 :(得分:5)
您可以原谅认为您的 PHP 脚本应该期望$_POST
变量中的数据,因为编码数据作为查询字符串传统上一直是默认机制。
然而,Angular默认将消息体编码为 JSON 对象。如前所述,您可以使用params
,但从长远来看,我认为在服务器端更加灵活。例如,您可以按如下方式读取和解码消息正文:
<?php
$data = json_decode( file_get_contents('php://input') );
echo $data->url;
答案 1 :(得分:2)
它应该是'params',而不是'data'。见http://docs.angularjs.org/api/ng/service/$http#usage
答案 2 :(得分:2)
请务必设置HTTP标头,如下所示:
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
答案 3 :(得分:1)
您可以使用http.post()
方法 -
试试这个代码 -
http.post('apis.php', {
url: someUrl
})
.success(function(data) {
console.log(data);
});