2016-09-12 42 views
0

我正在使用AngularJs(1.5)和Codeigniter rest服務器處理一個項目。我想知道爲什麼數據idTag不傳遞給PHP?讓我告訴你我的代碼,並進一步解釋評論。數據不傳遞給api調用

我有這樣的工廠

factory.get = function(idLocation, idTag){ 
    console.log(idLocation, idTag); //Console log outputs 1 6, so data is here 

    return $http({ 
     method: 'GET', 
     url: $location.protocol() + '://' + $location.host() + '/rest/api/locationtag/locationtag/' + idLocation, 
     data: { 
      idTag: idTag 
     } 
    }).then(function successCallback(response){ 
     console.log(response); 
     // response is empty, because data isn't sent to PHP 
     return response.data; 
    },function errorCallback(response){ 
     console.log('Error getting slide shows: ' + response.data.message); 
    }); 
}; 

這是我的PHP在那裏我嘗試獲取代碼

public function locationtag_get($idLocation) 
{ 
    $condition['id_location'] = $idLocation; 
    $condition['id_tag'] = $this->get('idTag'); 
    var_dump($condition); 
    die(); 
    $locationTag = $this->locations_tags->get($condition); 
    if ($locationTag) { 
     $this->response($locationTag, REST_Controller::HTTP_OK); 
    } 
} 

出放的var_dump是

'id_location' '1' 
'id_tag' null 

所以這個問題,爲什麼或如何正確地從GET方法發送數據到Codeigniter中的PHP休息控制器?

如果您需要任何其他信息,請讓我知道,我會提供。先謝謝你!

回答

1

對於GET請求,您應該使用params而不是data(用於POST請求)。您可以在AngularJS documentation中確認。

PARAMS - {。}對象 - 地圖這 將與paramSerializer被串行化和所附作爲GET 參數串或對象。

當然,沒有什麼能阻止您將它們添加到URL中,但您必須正確處理編碼信息,而不是僅傳遞JSON對象。

1

你應該在你的$ HTTP配置對象使用params屬性:

$http({ 
    url: $location.protocol() + '://' + $location.host() + '/rest/api/locationtag/locationtag/' + idLocation, 
     data: {, 
    method: "GET", 
    params: {idTag: idTag} 
}); 

給你網址這將作爲查詢字符串追加,然後你就可以在你的服務器端代碼檢查。