WordPress Ajax product update?

313
28 января 2017, 11:42

Выдает ошибку сервера 500

Ajax:

   jQuery(document).ready(function($) {
    $(document).on('change', '#menu_order', function(event) {
        var plugin_url = $(this).data('url'),
        product_id = $(this).data('product-id'),
        product_new_menu_order = $(this).val();
        jQuery.post(
            plugin_url,
            {
                'action': 'update_product',
                'data':  {
                    // 'action': 'update_product',
                    'product_id': product_id,
                    'product_new_menu_order': product_new_menu_order,
                },
            },
            function(response){
                alert('The server responded: ' + response);
            }
            );
    });
});

И сам update:

    $product_id = $_POST['product_id'];
    $product_new_menu_order = $_POST['product_new_menu_order'];
function update_product() {
    $product = array(
        'ID'           => $product_id ,
        'menu_order' => $product_new_menu_order,
        );
    wp_update_post( $product );
    wp_die();
}
add_action('wp_ajax_update_product', 'update_product');
add_action('wp_ajax_nopriv_update_product', 'update_product');

Вот, в файл апдейта заходит, принимает нужные данные, id поста, и новый порядок. Вот только хуки не отрабатывают, не позволяют обновить продукт, ошибка сервера 500.

Как исправить?

Answer 1
  1. Перенесите инициализацию переменных $product_id и $product_new_menu_order в тело функции update_product(). Значения post-переменных передаются ajax-ом непосредственно в функцию update_product().

  2. Переменной plugin_url в вашем ajax запросе должно быть присвоено значение http://url-вашего-сайта/wp-admin/admin-ajax.php, так как именно там находится обработчик AJAX.

  3. Вместо wp_die() лучше использовать wp_send_json_success() и wp_send_json_error().

  4. Исправьте сам ajax-запрос:

jQuery.post(
    plugin_url,
    {
        action: 'update_product',
        product_id: product_id,
        product_new_menu_order: product_new_menu_order
    },
    function(response){
        alert('The server responded: ' + response);
    }
);
READ ALSO
Никак немогу решить ошибку

Никак немогу решить ошибку

Ребят есть ошибка которая все ломает ,после того как она выдалась то все все остальные скрипты отпадают как это исправить ?Ребят очень нужна...

350
Сохранить параметр css в cookie

Сохранить параметр css в cookie

Всем приветУ меня есть элемент, свойство которого изменяется при нажатии на пользователем на определенную кнопку

479
можно ли в selenium ide написать javascript код?

можно ли в selenium ide написать javascript код?

можно ли в selenium ide написать javascript код? если да то как (пример), если нет то как отправить post запрос в selenium ide?

289