2015-10-05 41 views
0

我遇到麻煩使用PHP和角度進行POST或使用POST發送數據。我將問題簡化爲最簡單的情況,但仍然是一個空陣列。如何從角度ajax使用php獲取POST數據

這裏是我的角碼

this.search = function(){ 
    console.log("searching"); 
    $http({ 
     method: 'POST', 
     url: 'search/', 
     data: {search:1, direct: true} 
    }).then(function successCallback(response) { 
     console.log(response.data); 
    }, function errorCallback(response) { 
     console.log("Error retreaving data."); 
     console.log(response); 
    }); 
} 

和我的PHP代碼:

<?php 

header('Content-type: application/json'); 

echo json_encode($_POST) ; 

?> 

有趣的是,在這兩個地方使用GET,它的工作原理:/

+0

最有可能與http://stackoverflow.com/questions/19254029/angularjs-http-post-does-not-send-data – JCOC611

回答

3

角連載JS對象轉換爲JSON到POST,php不會從JSON post主體中填充$ _POST數據結構,爲了獲得post主體中的json數據,您必須從php://input

<?php 

header('Content-type: application/json'); 

echo file_get_contents('php://input') ; 

?> 
+0

爲什麼角發送您的JS對象作爲JSON?也許是因爲json比urlencoded形式的數據更性感(只是猜測)。除非你以'application/x-www-form-urlencoded'或'multipart/form-data'的形式發送數據,否則你不能使用$ _POST(除非你做'$ _POST = json_decode(file_get_contents('php:/ /輸入'),TRUE);')。我不是角度專家,但有辦法將數據作爲表單數據發送並使用$ _POST,但我認爲任何性能增益或損失都可以忽略不計。 – Musa

+0

以及如何將其轉換爲數組?我嘗試過'json_decode',但是有些奇怪的事情發生了...... – Vandervals

+1

您是否將json_decode的第二個參數設置爲true – Musa