数据没有传递给api调用

Data isn't passed to api call

本文关键字:api 调用 数据      更新时间:2023-09-26

我正在用AngularJs(1.5)和Codeigniter rest server做一个项目。我想知道为什么数据idTag不传递给php?让我向您展示我的代码,并用注释进一步解释。

我有这个工厂

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方法发送数据到PHP rest控制器在Codeigniter?

如果你需要任何额外的信息,请让我知道,我将提供。提前感谢!

对于GET请求,您应该使用params而不是data(用于POST请求)。你可以在AngularJS文档中确认。

params -{对象。} -字符串或对象的映射将与paramSerializer序列化并附加为GET参数。

当然,没有什么可以阻止您将它们添加到URL中,但您必须处理正确的信息编码,而不仅仅是传递JSON对象。

你应该在你的$http配置对象中使用params属性:

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

这将作为查询字符串附加到你的url,然后你可以在你的服务器端代码检查。