2013-09-23 62 views
14

我学习AngularJS并试图建立前端系统,从WordPress的获取数据。jQuery的Ajax请求的作品,同AngularJS Ajax请求不

在后端侧似乎一切都正确设置,当我使用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

你是如何在你的控制器 使用呢? – tymeJV

+0

更新了帖子。我尝试过不同的方式。评论也是如此。它们都不起作用。对不起 – Pavel

+0

将它添加到问题中,在评论中粘贴代码相当难看。 – tymeJV

回答

28

在angularjs代码,使用params:代替data:

在jQuery中,除非设置了processData: false,否则提供给data:配置设置的对象将转换为查询字符串(?key1 = val1 & key2 = value2)。在angularjs中,您必须使用params:来获取查询字符串,data:以json或字符串形式发送。

+0

它解决了这个问题。非常感谢! – Pavel

+4

应该注意,这将成为在服务器端 –

+2

这req.query我没有工作,直到我改变$ _ POST到$ _REQUEST –