2014-04-06 46 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