我有奇怪的 Codeigniter - Angular 问题。 我的想法是设置 Controller 像这样工作:
- index 是简单的 Angular 页面,只有 1 个应用程序和 1 个 Controller
- get是从数据库获取数据
- set是保存使用$http.post发送的数据
问题是 $http.post()
发送正确的数据,我在 Firebug 中看到它,
但 CI 没有意识到这一点。
我更改 header 参数,尝试使用 file_get_contents("php://input")
和 $this->input->post
捕获,但总是 空
。
有什么想法吗?
我尝试过这个:
$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 阻止了这个。
有什么想法吗?
最佳答案
这是一个常见问题,让我们开始: 添加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") (它始终是数据);
关于javascript - Codeigniter + $http.post() 的 Angular 问题。 Codeigniter收不到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31901976/