数据不会在post方法中传递给api调用

时间:2016-09-12 17:46:34

标签: php angularjs codeigniter

我正在使用AngularJs(1.5)和Codeigniter rest服务器开展一个项目。我想知道为什么数据标签没有传递给php?让我告诉你我的代码并进一步解释评论。

factory.insert = function(tag){
        console.log(tag); //out put present, so problem is in http request
        return $http({
            method: 'POST',
            url: $location.protocol() + '://' + $location.host() + '/rest/api/tag/tag/',
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
            data: {
                tag: tag
            }
        }).then(function successCallback(response) {
            return response.data;
        }, function errorCallback(response) {
            console.log('Can\'t insert tag: ' + response.data.message);
        });
    };

PHP

public function tag_post()
{
    $condition['tag'] = $this->post('tag');
    var_dump($condition);
}

var_dump $condition['tag']是'tag'null

更新

工厂的小变化解决了我的问题。现在我的数据看起来像这样,它的工作原理。为什么呢?

data: $.param({
   tag: tag
})

更新2

如果我使用cakePhp或Codeigniter,也会发生同样的事情。所以我猜这不是一个php方面的问题

1 个答案:

答案 0 :(得分:0)

当您在Angular中发布请求时,总是需要使用$ .param函数设置数据,因此params是“准备/添加的”。

data: $.param({
   tag: tag
})

例如在VueJs中你会做这样的事情

let params = new URLSearchParams();
params.append('firstName', this.name);
this.$http.post(this.$apiUrl + `rest/api/User/User/` + id_user, params, {})