Метка: AJAX

  • 24.05.16
  • 20:50
  • 976
  • 0

За один запуск WordPress активирует не более одного хука wp_ajax_* — в случае, когда обрабатывается AJAX-запрос. При обработке не-AJAX-запросов эти хуки не активируются. Поэтому, когда количество обработчиков AJAX велико, регистрировать их все сразу нет смысла.

В самом начале обработки запроса скрипт /wp-admin/admin-ajax.php задаёт константу DOING_AJAX как true, а действие, которое должно быть обработано, находится в $_REQUEST['action']. Этого достаточно, чтобы определить обработчик, который должен быть запущен. Если имена функций-обработчиков построены в виде "myplugin_ajax_{$action}", то регистрация нужного хука может выглядеть так:

После этого для добавления нового обработчика AJAX потребуется просто определить функцию с соответствующим именем.

  • 09.04.16
  • 19:35
  • 2129
  • 0

Основное отличие заключается в методе отправки данных: в случае GET данные размещаются в URL, в случае POST — в теле запроса.

GET используется, когда

  • запрос не изменяет данных на сервере;
  • допустимо или желательно кеширование результата запроса браузером;
  • серверу передаётся небольшой набор данных — в URL-кодировании он должен заведомо умещаться в 2048 байт вместе с путём к скрипту, обрабатывающему запрос (для WordPress это /wp-admin/admin-ajax.php, поэтому длина URL-кодированных данных — не более 2023 байт);

    Такой предел задан браузером IE, ограничивающим длину URL 2083 знаками, из которых под путь и параметры отводится не более 2048.

    Если данные динамичны и могут не поместиться в URL, следует использовать метод POST.

  • данные не являются конфиденциальными — допустимо сохранение URL в логах сервера, а также формирование URL вручную в адресной строке браузера;
  • запрос должен быть обработан быстро;

    Единственным аргументом в пользу скорости GET-запросов является возможность их кеширования. В отсутствие кеширования скорости приблизительно равны.

  • 07.04.16
  • 17:32
  • 2116
  • 0

Помогает определить, насколько сильно скорость получения ответа сервера зависит от метода AJAX-запроса — GET или POST.

Результаты экспериментов показывают, что в firefox’е >=38, хроме >=48, старых операх (на presto; новые — на chrome) и IE 9-11 различия между GET и POST пренебрежимо малы — средняя разница редко превышает несколько десятков миллисекунд.

Иногда могут возникать неясные задержки, проявляющиеся в одном браузере и отсутствующие в других. В подобных случаях рекомендуется воспользоваться сниффером (напр. wireshark).