2013-09-23 28 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. angularjsコードで

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

params:代わりのdata:を使用します。コントローラは、このようになります。

processData: falseを設定しない限り、jqueryではdata:設定に提供されたオブジェクトがクエリ文字列(?key1 = val1 & key2 = value2)に変換されます。 angularjsでは、クエリ文字列を取得するためにparams:を使用する必要があります。data:は、jsonまたはstringとして送信されます。

+0

問題を修正しました。どうもありがとう! – Pavel

+4

これはサーバー側でreq.queryになることに注意してください –

+2

$ _POSTを$ _REQUESTに変更するまではこれはうまくいかなかった –

関連する問題