2013-09-23 7 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 объект поставляется с настройкой data: конфигурации преобразуется в строку запроса (? Key1 = знач1 & key2 = значение2), если вы установите processData: false. в angularjs, вы должны использовать params:, чтобы получить строку запроса, data: отправляется как json или string.

+0

Устранена проблема. Большое спасибо! – Pavel

+4

Следует учитывать, что это становится req.query на стороне сервера –

+2

Это не сработало для меня, пока я не изменил $ _POST на $ _REQUEST –

Смежные вопросы