我有奇怪的Codeigniter - Angular问题。 我的想法是设置控制器像这样工作:
问题是$http.post()
发送了正确的数据,我在Firebug中看到了,
但CI没有抓住这一点。
我更改了标头参数,试图抓住file_get_contents("php://input")
和$this->input->post
,但始终是Null
。
有什么想法吗?
我试过了:
$http(
{
method: 'POST',
url: url,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function (obj) {
var str = [];
for (var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
},
data: data
});
有和没有标题和transformData更改......什么也没有。
我试图将相同的数据发送到原始的PHP脚本,并且它有效。所以,不知何故 - Codeigniter阻止了这一点。
有什么想法吗?
答案 0 :(得分:0)
这是一个常见问题,让我们开始: 将ngRoute脚本添加到您的文档中 并在您的应用程序模块中,添加此代码
var myApp = angular.module('myApp', ["ngRoute"]).
config(["$httpProvider",function($httpProvider)
{
$httpProvider.interceptors.push(['$q', function($q) {
return {
request: function(config) {
if (config.data && typeof config.data === 'object') {
// Check https://gist.github.com/brunoscopelliti/7492579
// for a possible way to implement the serialize function.
config.data = serialize(config.data);
}
return config || $q.when(config);
}
};
}]);
var serialize = function(obj, prefix) {
// http://stackoverflow.com/questions/1714786/querystring-encoding-of-a-javascript-object
var str = [];
for(var p in obj) {
var k = prefix ? prefix + "[" + p + "]" : p, v = obj[p];
str.push(typeof v == "object" ? serialize(v, k) : encodeURIComponent(k) + "=" + encodeURIComponent(v));
}
return str.join("&");
}
}]).
run(function($http) {
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8;";
});
现在在你的postService上(或者你在哪里使用$ http)
var postData = function(method,data) {
return $http.post("controller.php?/"+method,{data:data})
.then(function(response) {
return response.data;
},
function(response) {
//handle error
});
}
//use
postData("userLogin",{username:"username",password:"password"}).then(function(response){
});
现在codeIgniter将获得input-> post(“data”)(它总是数据);