WordPress Ajax успешен, но функция не работает - PullRequest
0 голосов
/ 26 января 2019

Я уже некоторое время гуглял по этому поводу и пробовал несколько вещей (например, вложил мои formName и formData в атрибут «data:», но это привело к анализу ошибок, так что я предполагаю, что я довольно близок к тому, чтобы это работало! Я также удалил эти атрибуты и жестко закодировал элементы в своей функции, но проблема остается той же.

Кажется, все в порядке, и я получаю предупреждение об успехе, но когда я проверяю свою базу данных, пользовательские меты не были обновлены. Я не знаю лучшего способа отладки PHP-функции, поэтому любые советы по этому вопросу пригодятся в будущем !!

Это моя функция ajax, которая срабатывает при размытии:

function storeData(data) {   

    $.ajax({
        type: 'POST',
        formData: data,
        formName: 'Testform',
        action: 'storeApplicationData',

        success:function( data ) {
            console.log('stored form');
        },
        error: function(xml, error) {
            console.log(error);
        }
    });
    return false;
}

Это мой PHP-код в моем файле функций, я жестко закодировал значения, которые я сейчас передаю в update_user_meta, просто чтобы убедиться, что это не проблема:

function storeApplicationData(){
  update_user_meta('15', 'Testform', '12345678');
}
add_action('wp_ajax_storeApplicationData', 'storeApplicationData');
add_action('wp_ajax_nopriv_storeApplicationData', 'storeApplicationData');

Я проверяю базу данных напрямую, мета-поле не обновляется ...

Любая помощь будет оценена!

1 Ответ

0 голосов
/ 26 января 2019

Я понял это, мне не хватало правильного enqueing для моего ajax url:

function theme_enqueue() {

    $theme_url  = get_template_directory_uri();     // Used to keep our Template Directory URL
    $ajax_url   = admin_url( 'admin-ajax.php' );        // Localized AJAX URL

    // Register Our Script for Localization
    wp_register_script( 'applications', "{$theme_url}/applicationform.js", array( 'jquery' ),'1.0', true);

    // Localize Our Script so we can use `ajax_url`
    wp_localize_script('applications','ajax_url',$ajax_url);

    // Finally enqueue our script
    wp_enqueue_script( 'applications' );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue' );

Я также добавил:

url: ajax_url,

на мой аякс!

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