2014-04-06 108 views
1

我想发送,然后从我的服务器上的PHP获取数据,但我不认为它发送的数据。angularjs无法与POST通信使用POST

我的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的新手,并且阅读了其他一些问题。我尝试添加标题和其他东西,但没有任何工作。

回答

5

你可以原谅的思想,你的PHP脚本应该在$_POST变量编码在期待数据您的数据作为查询字符串传统上始终是默认机制。

Angular然后将邮件正文编码为默认的JSON对象。如上所述,您可以使用params来代替,但从长远来看,我认为在服务器端更符合要求。例如,您可以读取并解码如下消息体:

<?php 
    $data = json_decode(file_get_contents('php://input')); 
    echo $data->url; 
+0

谢谢。这解决了我的问题! –

2

它应该是'参数',而不是'数据'。见http://docs.angularjs.org/api/ng/service/$http#usage

+0

试过了。仍然一样:( –

+0

当你正在执行函数“initGames”时,你在浏览器的网络日志中看到什么? –

+1

@iceless'params'作为api url的一部分发送 - ***即***变量会在$ _GET ['url']'而不是post中。 – Emissary

1

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

试试这个代码 -

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

Post方法只是一个辅助函数。没有内在错误 – JeffryHouser

+0

对!Cruel_Crow答案应该做的! – Prasad