2013-09-23 99 views
14

Tôi đang học AngularJS và cố gắng xây dựng hệ thống front-end lấy dữ liệu từ Wordpress.Yêu cầu jQuery ajax hoạt động, cùng yêu cầu AngularJS ajax không

Trên mặt sau, mọi thứ dường như được thiết lập đúng cách và khi tôi sử dụng yêu cầu jQuery ajax, nó sẽ nhận dữ liệu mà không gặp sự cố.

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

Nhưng khi tôi cố gắng làm điều tương tự với AngularJS, nó không hoạt động. Tôi đang cố gắng sao chép yêu cầu ajax bằng mã như sau:

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

    }; 
}); 

Nếu tôi đăng nhập, nó sẽ xuất ra 0. Tôi thiếu gì?

Cảm ơn sự giúp đỡ của bạn.

P.S. Điều khiển trông như thế này:

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

Bạn đang sử dụng bộ điều khiển này như thế nào trong bộ điều khiển ? – tymeJV

+0

Đã cập nhật bài đăng. Tôi đã thử nhiều cách khác nhau. Bình luận là tốt. Không ai trong số họ hoạt động. Xin lỗi – Pavel

+0

Hãy thêm vào câu hỏi, vui lòng dán mã trong phần bình luận khá xấu xí. – tymeJV

Trả lời

28

Trong mã angularjs, sử dụng params: thay vì data:.

Trong jquery, đối tượng được cung cấp cho cài đặt cấu hình data: được chuyển thành chuỗi truy vấn (? Key1 = val1 & key2 = value2) trừ khi bạn đặt processData: false. trong angularjs, bạn phải sử dụng params: để nhận chuỗi truy vấn, data: được gửi dưới dạng json hoặc chuỗi.

+0

Nó đã khắc phục được sự cố. Cảm ơn rất nhiều! – Pavel

+4

Nên lưu ý rằng điều này trở thành req.query ở phía máy chủ –

+2

Điều này không có tác dụng đối với tôi cho đến khi tôi thay đổi $ _POST thành $ _REQUEST –