Моя функция, содержащая запрос mysql, запущенный ajax, не работает в wordpress. Что мне не хватает? - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь вставить строки в созданную мной таблицу на основе ответов пользователя. Я создал дочернюю тему и собственный шаблон для страницы с формой. Моя проблема в том, что у меня нет возможности узнать, что происходит не так, где и почему не вставляются данные. Моя js функция onclick выглядит следующим образом, и этот файл называется question_submit. js:

jQuery(document).ready(function(){
    jQuery("#questionSubmit").click(function(){
        alert("clicked");
        jQuery.ajax({
            type: 'POST',
            dataType: 'json',
            url:  my_ajax_object.ajax_url, 
            data: { 
                'action' : 'dbtest',
                'option': 1, 
            },
            success: function(data){
                alert(data);
            }
        });
    })
});

Вот где я помещаю скрипт в очередь:

function my_enqueue() {
      wp_enqueue_script( 'question_submit', get_stylesheet_directory_uri() . '/assets/js/question_submit.js', array('jquery') );
      wp_localize_script( 'question_submit', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
 }
 add_action( 'wp_enqueue_scripts', 'my_enqueue' );

И, наконец, здесь - это функция, связанная с действием:

function dbtesting(){
    
    global $wpdb;
    $data = $_POST['data'];
    //$option = sanitize_text_field($_POST["option"]);
    
    $tableName = 'user_answers';
    $insert_row = $wpdb->insert( 
                    $tableName, 
                    array( 
                        'user_id' => 2, 
                        'module_id' => 3, 
                        'section_id' => 1, 
                        'question_id' => 2,
                        'option_no' => 1, 
                    )
                );
    // if row inserted in table
    if($insert_row){
        echo json_encode(array('res'=>true, 'message'=>__('New row has been inserted.')));
    }else{
        echo json_encode(array('res'=>false, 'message'=>__('Something went wrong. Please try again later.')));
    }
    wp_die();
}
add_action( 'wp_ajax_dbtest', 'dbtesting' );
add_action( 'wp_ajax_nopriv_dbtest', 'dbtesting' );

Обе эти функции находятся в файле functions. php моей дочерней темы. Прямо сейчас я использую жестко запрограммированные значения только для проверки функциональности, позже эти значения будут зависеть от ответов формы.

Когда я нажимаю кнопку отправки, в моей таблице нет изменений, но также нет php ошибок.

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