2013-09-23 14 views
14

Ich lerne AngularJS und versuche, Front-End-System zu bauen, das Daten von Wordpress bekommt.jQuery ajax Anfrage funktioniert, gleiche AngularJS Ajax Anfrage nicht

Auf der Back-End-Seite scheint alles richtig eingerichtet zu sein und wenn ich jQuery ajax Anfrage verwende, bekommt es die Daten ohne Probleme.

Aber wenn ich versuche, das gleiche mit AngularJS zu tun, funktioniert es nicht. Ich versuche, die Ajax-Anforderung mit Code wie folgt zu replizieren:

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) 
      }); 
     }, 

    }; 
}); 

Wenn ich es einzuloggen, gibt sie 0 Was bin ich?

Danke für Ihre Hilfe.

P.S. Controller sieht wie folgt aus:

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

Wie verwenden Sie dies in Ihrem Controller ? – tymeJV

+0

Aktualisierte den Beitrag. Ich habe verschiedene Wege ausprobiert. Kommentiert auch. Keine von ihnen funktioniert. Sorry – Pavel

+0

Fügen Sie es bitte der Frage hinzu, Code in Kommentare einzufügen ist ziemlich hässlich. – tymeJV

Antwort

28

Im AngularJS Code verwenden params: statt data:.

In jquery das Objekt der data: Konfigurationseinstellung geliefert an einen Query-String umgewandelt wird (? Key1 = val1 & key2 = Wert2), wenn Sie processData: false gesetzt. In angularjs müssen Sie params: verwenden, um eine Abfragezeichenfolge abzurufen, data: wird als JSON oder Zeichenfolge gesendet.

+0

Es behebt das Problem. Danke vielmals! – Pavel

+4

Sollte beachten, dass dies req.query auf der Serverseite wird –

+2

Dies hat nicht funktioniert für mich, bis ich $ _POST in $ _REQUEST –