[英]Angular JS: Why am I not able to send data through `$http`?
在我的控制器中,我通過以下方式發送http
請求:
var postData = { action: 'getTasksByProjectSlug', slug: 'inbox' }
$http({
url: 'http://localhost/toodloo/api/kernel.php',
method: 'POST',
data: postData,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}).success(function( data, status, headers, config ){
console.log( data );
}).error(function( data, status, headers, config ) {
console.log( status );
});
在kernel.php
我得到了以下內容:
class Kernel
{
function __construct( $requestData )
{
if ( ( isset( $requestData ) === false ) || empty( $requestData ) ) {
die( 'No data received!' );
}
$this->findRoute( $requestData );
}
public function findRoute( $requestData ) {
...
} else if ( ( $requestData['action'] === 'getTasksByProjectSlug' ) && isset( $requestData['slug'] ) ) {
$this->getTasksByProjectSlug( $requestData['slug'] );
} else {
...
}
public function getTasksByProjectSlug( $slug ) {
$project = new Project;
$tasks = $project->getTasksByProjectSlug( $slug );
$json = json_encode( $tasks );
echo $json;
return $json;
}
}
$kernel = new Kernel( $_POST );
現在問題出在console.log( data );
$http
success
的內部是'No data received'
,這就是條件( isset( $_POST ) === false ) || empty( $_POST ) )
時API所做的事情 ( isset( $_POST ) === false ) || empty( $_POST ) )
,所以我從中推斷出請求已發送到服務器,但是我var postData = { action: 'getTasksByProjectSlug', slug: 'inbox' }
發送的數據var postData = { action: 'getTasksByProjectSlug', slug: 'inbox' }
在服務器端收到。
誰能告訴我在這里我可能做錯了什么? 為什么postData
沒有在服務器端發送?
PS:我也嘗試使用data: JSON.stringify(postData)
但結果仍然相同
在Kernel
類實例化的頂部添加以下內容對我有用:
$requestParams = json_decode(file_get_contents('php://input'));
$requestParams = (array) $requestParams;
現在$requestParams
行為就像$_POST
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.