Проблемы с AJAX (не удается заставить ajax работать успешно) PHP, AJAX, JAVASCRIPT, WORDPRESS (БЕЗ ПЛАГИНА)

Сегодня я задал вопрос с небольшой удачей: AJAX в цикле foreach

Меня поставили на правильный путь, но предоставленный ответ запутал меня еще больше, чем когда-либо. Всякий раз, когда я нажимаю на свой тег привязки с вызовом ajax, ничего не происходит. Когда я захожу в консоль и проверяю вкладку сети, он говорит, что вызов прошел успешно. когда я углубляюсь в детали вызова, он показывает все данные, которые я отправил, и страницу, на которую она пошла. Код на page_id=252 вообще не срабатывает.

Я использую wordpress для этого задания. Я использую пользовательские шаблоны для хранения своего PHP-кода. не плагин.

У меня есть две страницы:

Index.php
ajaxcall.php

Index.php (?page_id=## — постоянные ссылки по умолчанию на мои wp-страницы. Это местоположение допустимо.)

    <script type="text/javascript">
    function onClickingThis(rem_opt,vidid){
      $.ajax({
          url: '?page_id=252', 
          type: 'POST',
          data: {action: 'update_this_func', remove_option: rem_opt, uservideo_id: vidid },
          dataType: 'json',
          success: function(response){
            console.log('works');
          }
      });
    }
</script>

// all my php code, for everything on the page.
<a href="#"  onclick="onClickingThis(0,1)></a>

ajaxcall.php

function update_this_func(){
$remove_option = $_POST['remove_option'];
$uservideo_id  = $_POST['uservideo_id'];

global $wpdb;

$wpdb->query("UPDATE " . $wpdb->prefix."uservideo
              SET is_removed =" . $remove_option . "
              WHERE uservideo_id =" . $uservideo_id );

return json_encode(['status' => 'Updated!']); // return status as json
}

Этот код был предоставлен пользователем Ervald, но он не хотел подробно рассказывать о своем коде. Мое сообщение об успехе не работает для ajax, но я не получаю никаких ошибок в консоли. Как мне отладить мой ajax? мой ajax не настроен должным образом? Если это неправильный способ использования ajax, сообщите мне об этом. Любая помощь ОЧЕНЬ приветствуется.


person user3753569    schedule 07.09.2014    source источник
comment
Вы можете отлаживать AJAX, ища элементы XHR на вкладке Chrome Network в инструментах разработчика (F12). Нажмите на элемент, и он покажет другой кадр справа от вас, затем вы можете просмотреть информацию о запросе, а также вкладку предварительного просмотра.   -  person Fabiano Araujo    schedule 07.09.2014


Ответы (1)


в вашем скрипте PHP было 2 проблемы:
1. функция не была вызвана
2. возвращаемое значение функции не было отображено.

(чтобы ответить на вызов AJAX, вызываемый url всегда должен что-то выводить - JSON в большинстве случаев. AJAX не может получить доступ PHPи поэтому не может прочитать PHP возвращаемые значения.)

вот исправленная версия:

function update_this_func($remove_option, $uservideo_id){

    global $wpdb;

    $wpdb->query("UPDATE " . $wpdb->prefix."uservideo
                  SET is_removed =" . $remove_option . "
                  WHERE uservideo_id =" . $uservideo_id );

    return json_encode(['status' => 'Updated!']); // return status as json
}
echo update_this_func($_POST['remove_option'], $_POST['uservideo_id']);
person low_rents    schedule 07.09.2014
comment
Большое спасибо. это был долгий день, я даже не знал, что аргументы не были предоставлены функции. - person user3753569; 07.09.2014
comment
@user3753569 user3753569 ну, они были определены внутри функции со значениями переменных $_POST. что также работает, потому что переменные $_POST являются глобальными и, следовательно, также доступны внутри функций. так что проблема была не в этом. мне лично так больше нравится, поэтому и поменял. - person low_rents; 07.09.2014
comment
@user3753569 user3753569, пожалуйста :), если бы вы могли также проголосовать за мой вопрос, вы бы сделали мне еще одну услугу;) - person low_rents; 07.09.2014