Как вызвать PHP-функции WordPress Custom Plugin из кода Angular JS? Он работает с jQuery.post, но не с $http.post

Я пытаюсь вызвать функцию PHP в моем файле functions.php. Функция PHP выглядит следующим образом:

function add_product_to_cart(){
    try {
          //some code to add product to woo-commerce cart
          echo '{"message": "THIS WAS EXECUTED"}';
        } catch (Exception $e) {
                echo 'Caught exception: ',  $e->getMessage(), "\n";
        }
    wp_die();
}
//The following lines are there to enable my function to be called via ajax
add_action( 'wp_ajax_add_product_to_cart', 'add_product_to_cart' );
add_action( 'wp_ajax_nopriv_add_product_to_cart', 'add_product_to_cart' );

Рабочий код jQuery для вызова вышеуказанной функции:

jQuery( document ).ajaxError(function(event, jqxhr, settings, thrownError) {
  alert( 'Error: ' + thrownError );
});
jQuery.post( $scope.ajaxUrl,
  {'action' : 'add_product_to_cart'}, function( response ){
    if ( !response.error ) {
        window.location.href='/cart';
    } else {
      alert ('error: ' + response.error );
    }
},  "json" );

Неработающий угловой код:

$http.post($scope.ajaxUrl, { 'action' : 'add_product_to_cart'}, 
{'content-type':'json'}).then(
    function(successResponse){
        alert('Success: ' + successResponse);
    }, function(errorResponse){
        alert('Error: ' + errorResponse);
});

Я думаю, что у меня нет проблем с кодом PHP, так как он вызывается с помощью jQuery. Похоже, что основной проблемой является вызов функции через службу Angular $http.

Ошибка ответа, которую я получаю от WordPress при вызове с использованием $ http, равна 400 (неправильный запрос), а ответ равен 0.

Вот что я получил из кодекса WordPress

Если Ajax-запрос не выполняется в wp-admin / admin-ajax.php, ответ будет -1 или 0, в зависимости от причины сбоя. Кроме того, если запрос выполняется успешно, но действие Ajax не соответствует ловушке WordPress, определенной с помощью add_action('wp_ajax_(action)', ...) или add_action('wp_ajax_nopriv_(action)', ...), то admin- ajax.php ответит 0.

0 ответов

Другие вопросы по тегам