Получение ошибки 400 при запросе ajax на пользовательскую тему Wordpress - PullRequest
1 голос
/ 01 июля 2019

Я пишу пользовательскую тему Wordpress и на одной из страниц у меня есть форма с двумя вариантами выбора и кнопкой отправки.Обычно пользователь может выбрать два города и проверить, существует ли маршрут между ними.Я использую поле Advanced Custom Fields Relationship, чтобы связать города (город - это тип сообщения).Проблема в том, что я всегда получаю ошибку 400 и не могу понять, в чем проблема.

Я проверил найденные здесь разные решения, но ни одно из них, похоже, не работает для меня.

admin-ajax.php:

add_action('wp_ajax_check_route', 'check_route');
add_action('wp_ajax_nopriv_check_route', 'check_route');

function check_route() {
    $id_cidade_origem = intval($_REQUEST['cidade_origem']);
    $id_cidade_destino = intval($_REQUEST['cidade_destino']);

    $cidades_atendidas = get_field('regioes_atendidas', $id_cidade_origem);

    $tem_relacao = False;
    foreach ($cidades_atendidas as $cidade) {
        if($cidade->ID == $id_cidade_destino){
            $tem_relacao = True;
            break;
        }
    }
    $data = array(
        'success' => true,
        'tem_relacao' => true
    );
    wp_send_json_success($data);
    $data = array(
        'success' => false
    );
    wp_send_json_error($error_data);
}

scripts.js:

jQuery("#regioes-botao").click(function (){
        console.log("Clicou!");
        jQuery.ajax({
            type: "POST",
            url: "/wp-admin/admin-ajax.php",
            data: {
                action: 'check_route',
                cidade_origem: jQuery('#select-from').find(":selected").val(),
                cidade_destino: jQuery('#select-to').find(":selected").val(),
            },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (output) {
               console.log('sucesso!')
               console.log(output);
               var resposta = output.tem_relacao;
               if(resposta == true){
                    jQuery('#resposta span').text("Nós fazemos esta rota, entre em contato.")
               }else{
                    jQuery('#resposta span').text("No momento não fazemos esta rota, mas já estamos trabalhando para que seja possível em breve.")
               }
            },
            error: function(output){
                console.log(output)
            }
        });
    });

1 Ответ

0 голосов
/ 02 июля 2019

Код ошибки 400 означает, что ваш исходный запрос не понятен для сервера. Попробуйте приведенный ниже код:

$.ajax({
    url: ajax_object.ajax_url, //Used wp_localize_script to pass ajax url to wordpress. Example is at https://codex.wordpress.org/AJAX_in_Plugins
    type: 'POST',
    data: { 
        'action': 'check_route', 
        'cidade_origem': jQuery('#select-from').find(":selected").val(),
        'cidade_destino': jQuery('#select-to').find(":selected").val(), 
    },
})
.done(function(response) {
    console.log(response);
})
.fail(function() {
})
.always(function() {
});

Обратите внимание, что я только определил тип запроса, URL для вызова и данные для отправки. Я почти уверен, что это должно работать, так как я использую это во многих своих проектах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...