我正在学习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。我缺少什么?
谢谢你的帮助。
PS控制器如下所示:
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; }); });
在angularjs代码中,使用params:代替data:。
params:
data:
在jquery中,data:除非您设置,否则提供给config设置的对象将转换为查询字符串(?key1 = val1&key2 = value2)processData: false。在angularjs中,您必须用于params:获取查询字符串,data:以json或string的形式发送。
processData: false