angularjs无法使用POST与php通信

时间:2014-04-06 10:48:45

标签: javascript php angularjs http post

我正在尝试发送,然后在我的服务器上从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的新手,我也读过其他一些问题。我尝试过添加标题和其他内容,但没有任何效果。

4 个答案:

答案 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';

More info on using Post from AngularJS to PHP

答案 3 :(得分:1)

您可以使用http.post()方法 -

试试这个代码 -

http.post('apis.php', {
                    url: someUrl
                })
                .success(function(data) {
                    console.log(data);
                });