Почему не срабатывает ajax и не передается запрос? — javascript php ajax

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Загрузка...

Вопрос:


Это код для того что бы редактировать доп.поле не заходя в запись (в админке водпреса)
я не пойму почему не срабатывает вообще и не передается значение.

 // быстрый редактор в админ панеле по записям

   function true_add_post_columnd($md_columns){
    $slider = array( 'description' => 'Description' );
    $md_columns = array_slice( $md_columns, 0, 5, true ) + $slider + array_slice( $md_columns, 5, NULL, true );
    return $md_columns;
}
 function true_fill_post_columnd($dcolumns) {
    global $post;
    switch ($dcolumns) {
        case 'description':
            echo '<input type="text" class="this_description" data-id="' . $post->ID .'" value="' . get_post_meta( $post->ID, 'description', true ) . '" /><p></p>';
            break;
    }
}
 add_filter( 'manage_edit-page_columns', 'true_add_post_columnd', 10, 1 ); // manage_edit-{тип поста}_columns
 add_action( 'manage_pages_custom_column', 'true_fill_post_columnd', 10, 1 ); 



function updateDescription_callback(){ // название не имеет значения, но должно соответствовать названиям в хуках
    update_post_meta($_POST['page_id'], 'description', esc_attr($_POST['description_val']));
    die(); 
}
 if( is_admin() ) {
    add_action('wp_ajax_updateDescription', 'updateDescription_callback');
    add_action('wp_ajax_updatePrice', 'updatePrice_callback');
    // wp_ajax_nopriv_ не нужен, так как мы работаем в админке (а в админку не попадают незареганные пользователи)
}

вот js

jQuery(function($){

     $('.this_description').blur(function(){
        this_description = $(this);
        $.ajax({
            type:'POST',
            url:ajaxurl,
            data:'action=updateDescription&description_val=' + this_description.val() + '&page_id=' + this_description.attr('data-id'),
            beforeSend:function(xhr){
                this_description.attr('readonly','readonly').next().html('Сохраняю...');
            },
            success:function(results){
                this_description.removeAttr('readonly').next().html('<span style="color:#0FB10F">Сохранено</span>');
            }

        });
    });
}); 

Автор вопроса: AndSol

AndSol

А попробуйте прямо добавить onblur в input

function true_fill_post_columnd($dcolumns) {
    global $post;
    switch ($dcolumns) {
        case 'description':
            echo '<input type="text" onblur="update_description_ajax(this)" class="this_description" data-id="' . $post->ID .'" value="' . get_post_meta( $post->ID, 'description', true ) . '" /><p></p>';
            break;
    }
}


function update_description_ajax(self){
    this_description = $(self);
    $.ajax({
        type:'POST',
        url:ajaxurl,
        data:'action=updateDescription&description_val=' + this_description.val() + '&page_id=' + this_description.attr('data-id'),
        beforeSend:function(xhr){
            this_description.attr('readonly','readonly').next().html('Сохраняю...');
        },
        success:function(results){
            this_description.removeAttr('readonly').next().html('<span style="color:#0FB10F">Сохранено</span>');
        }

    });
}

Решение получилось таким, вероятнее всего где то ошибка была и методом тыка из за незнания php. Этот код позволяет редактировать доп.поля не заходя в редактор страницы, а прямо в колонке редактировать доп поля, в моем случаее это description.

введите сюда описание изображения

function true_fill_post_columnsdesc( $column ) {
    global $post;
    switch ( $column ) {
        case 'description':
            echo '<input type="text" class="this_desc" data-id="' . $post->ID .'" value="' . get_post_meta( $post->ID, 'description', true ) . '" /><p></p>';
            break;
    }
}

add_action( 'manage_pages_custom_column', 'true_fill_post_columnsdesc', 10, 1 );

function updateDescr_callback(){ // название не имеет значения, но должно соответствовать названиям в хуках
    update_post_meta($_POST['page_id'], 'description', esc_attr($_POST['description_val']));
    die();
}
if( is_admin() ) {
add_action('wp_ajax_updateDescr', 'updateDescr_callback');
    // wp_ajax_nopriv_ не нужен, так как мы работаем в админке (а в админку не попадают незареганные пользователи)
}

и js

jQuery(function($){
    $('.this_desc').blur(function(){
        this_desc = $(this);
        $.ajax({
            type:'POST',
            url:ajaxurl,
            data:'action=updateDescr&description_val=' + this_desc.val() + '&page_id=' + this_desc.attr('data-id'),
            beforeSend:function(xhr){
                this_desc.attr('readonly','readonly').next().html('Сохраняю...');
            },
            success:function(results){
                this_desc.removeAttr('readonly').next().html('<span style="color:#0FB10F">Сохранено</span>');
            }
        }); 
    });

}); 

Источник скрипта

Источник

Вам также может быть интересно:

Drag and Drop UWP — c# xaml mvvm
Вопрос: Нужно иметь возможность добавлять изображения в приложение путем перетаскивания из файловой системы У Grid включил AllowDrop. Но как добавить перетаскиваемые изображения в коллекцию? Т.к. те ...
Растягивание Высоты , Резина — html css html5
Вопрос: Здравствуйте! Реализовал резиновый дизайн. Растягивается ширина, но длина по % не растягивается. Возможно ли это реализовать? Или так и задумано, растягивание только на ширину ...
Jquery position().left Как быть на мобильниках? — javascript jquery css
Вопрос: На мобильных устройствах, если зумишь экран, position всегда разный. $('g').position().left Как сделать так, чтобы он не менял свои значения? Автор вопроса: ...
Jquery position().left Как быть на мобильниках? — javascript jquery css
Вопрос: На мобильных устройствах, если зумишь экран, position всегда разный. $('g').position().left Как сделать так, чтобы он не менял свои значения? Автор вопроса: ...
requestAnimation и очередность отрисовки — javascript canvas
Вопрос: Здравствуйте! Реализовал 2D игру и в Edge работает все плавно и круто, но в Firefox'e подвисает, сказали, что нужно сделать, чтобы раз-два момент и все ...
Контекстное/всплывающее меню в Android — java android popup
Вопрос: Есть ли техническая возможность сделать приложение, добавляющее свое контекстное или всплывающее меню в любом месте системы? Хочу, чтобы при выделении любого текста появлялась дополнительная кнопка ...
Контекстное/всплывающее меню в Android — java android popup
Вопрос: Есть ли техническая возможность сделать приложение, добавляющее свое контекстное или всплывающее меню в любом месте системы? Хочу, чтобы при выделении любого текста появлялась дополнительная кнопка ...
Завершить службы циклом — c# windows-service
Вопрос: Можно ли остановить службы циклом? У меня есть список служб, занёс их в List List<string> name = new List<string> { "AdobeARMservice", "RemoteRegistry", "TermService", "Messenger", "SSDPSRV", ...
Завершить службы циклом — c# windows-service
Вопрос: Можно ли остановить службы циклом? У меня есть список служб, занёс их в List List<string> name = new List<string> { "AdobeARMservice", "RemoteRegistry", "TermService", "Messenger", "SSDPSRV", ...
RecyclerView — разная разметка — android recyclerview
Вопрос: Смотрел, я смотрел в сторону RecyclerView и наконец решил кинуть ListView и на тебе! В "плохом прошлом" мой ListView использовался для двух разметок. Сейчас я ...
RecyclerView — разная разметка — android recyclerview
Вопрос: Смотрел, я смотрел в сторону RecyclerView и наконец решил кинуть ListView и на тебе! В "плохом прошлом" мой ListView использовался для двух разметок. Сейчас я ...
Как правильно передать массив аргументом для пользовательской функции — php
Вопрос: Если не брать в функцию все это, тогда результат работает. А если вот так в функции все выполнять, тогда PHP ругается: «Invalid ...
Как правильно передать массив аргументом для пользовательской функции — php
Вопрос: Если не брать в функцию все это, тогда результат работает. А если вот так в функции все выполнять, тогда PHP ругается: «Invalid ...
ViewPager внутри ViewPager — такие матрешки работают? — android viewpager
Вопрос: Доброго времени суток. Назрела новая задача. Есть каталог мастеров. При выборе конкретного мастера открывается его страница (активити с ViewPager), и теперь мастеров можно перелистывать свайпом. ...
Почему id всегда 1 Yii2 — yii авторизация
Вопрос: Использую все как по документации. Для получения информации о пользователе использую $identity = $model->findOne(]); И каким бы не был email, id пользователя всегда ...

Оставьте ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *