我正在学习AngularJS并尝试构建从Wordpress获取数据的前端系统。
在后端,一切似乎都设置正确,当我使用jQuery ajax请求时,它可以毫无问题地获取数据。
jQuery.ajax({
type: 'POST',
url: '/wp-admin/admin-ajax.php',
data: {
action: 'getdataajax'
},
success: function(data, textStatus, XMLHttpRequest){
console.log(data);
},
error: function(MLHttpRequest, textStatus, errorThrown){
console.log(errorThrown);
}
});
但是当我尝试用AngularJS做同样的事情时,它不起作用。我正在尝试使用以下代码复制ajax请求:
myApp.factory('productsData', function($http, $log) {
return {
getProducts: function(successcb) {
return $http({
method: 'POST',
url: '/wp-admin/admin-ajax.php',
data: {action: 'getdataajax'}
}).success(function(data, status, headers, config) {
successcb(data);
$log.info(data, status, headers(), config)
}).error(function(data, status, headers, config) {
$log.warn(data, status, headers(), config)
});
},
};
});
如果我记录它,它会输出0.我缺少什么?
感谢您的帮助。
P.S。控制器看起来像这样:
myApp.controller('ProductsController', function ProductsController($scope, productsData) {
$scope.sortorder = 'name';
// $scope.products = productsData.products;
// $scope.products = productsData.getProducts();
productsData.getProducts(function(products){
$scope.products = products;
});
});
答案 0 :(得分:28)
在angularjs代码中,使用params:
代替data:
。
在jquery中,除非您设置data:
,否则提供给processData: false
配置设置的对象将转换为查询字符串(?key1 = val1& key2 = value2)。在angularjs中,您必须使用params:
来获取查询字符串,data:
将以json或string的形式发送。