angularjs 无法使用 POST 与 PHP 通信



我正在尝试发送然后从服务器上的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);
                });

最新更新