@Arh1diablo

Как в WP в AJAX получить обратно несколько переменных?

Есть HTML:

60ed1a5d89db6722587989.png

При клике по элементам .content-view-block-wrap JS получает id через id="x'
$(".content-view-block-wrap").on("click", function (event) {
    event.preventDefault();

    var hid_id = this.id;

    $.ajax({
        url: "/wp-admin/admin-ajax.php",
        method: 'post',
        data: {
            action: 'ajax_id_obj',
            hid_id: hid_id
        },
        dateType: 'JSON',
        success: function (response) {
            $('.testzone').html(JSON.parse(response.date));
            $('.testzone2').html(JSON.parse(response.test));
        }
    });
});

Скрипт передает в файл обработчик, который принимает данные, обрабатывает и должен вернуть не одну переменную, а несколько:

function ajax_id_obj(){
    $hid_id = wp_strip_all_tags($_REQUEST['hid_id']);

    $date = 'тест'.$hid_id;
    $test = 'тест2'.$hid_id;

    if ( defined( 'DOING_AJAX' ) && DOING_AJAX ){
        echo $response = json_encode( array('date'=>$date, 'test'=>$test) );;
        wp_die();
    }
}

add_action('wp_ajax_nopriv_ajax_id_obj', 'ajax_id_obj' );
add_action('wp_ajax_ajax_id_obj', 'ajax_id_obj' );


( до этого я только с 1 переменной работал там все просто ).

Подскажите как можно решить этот вопрос ?

Перерыл интернет, и добавил dateType: 'JSON' в JS и отправляю данные через json_encode и принимаю как JSON.parse(response.test), но выдает в консоли :

Uncaught SyntaxError: Unexpected token u in JSON at position 0
60ed1c29743ba684838184.png

P.S. В PHP обработчике поставил тестовые переменные, потом подставлю какие мне надо возвращать, выпилил цикл, что бы код покороче был.
P.S.S. В упрощенной версии с 1 переменной все работает, это я к тому, что JS передает данные в исполняющий файл и файл переменную возвращает.

Упрощенная версия которая работает:

$(".content-view-block-wrap").on("click", function (event) {
    event.preventDefault();

    var hid_id = this.id;

    $.ajax({
        url: "/wp-admin/admin-ajax.php",
        method: 'post',
        data: {
            action: 'ajax_id_obj',
            hid_id: hid_id
        },
        success: function (response) {
            $('.testzone').html(response);
        }
    });
});


function ajax_id_obj(){
    $hid_id = wp_strip_all_tags($_REQUEST['hid_id']);


    $response = 'тест'.$hid_id;

    if ( defined( 'DOING_AJAX' ) && DOING_AJAX ){
        echo $response;
        wp_die();
    }
}

add_action('wp_ajax_nopriv_ajax_id_obj', 'ajax_id_obj' );
add_action('wp_ajax_ajax_id_obj', 'ajax_id_obj' );
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы