2013-09-23 121 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 –