簡體   English   中英

Angular JS:為什么我不能通過`$ http`發送數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM