我正在使用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方面的问题
答案 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, {})