Как правильно обрабатывать запросы ajax с помощью плагинов ajax

Некоторое время я занимался этой темой. Я следовал руководству Пиппина . По словам 2-го разработчика wordpress, с которым я получил совет, этот учебник теперь устарел / не подходит.

Он сказал мне, что я не должен echo в обратном вызове AJAX.

JavaScript должен обработать это. Также для отправки данных в wp_send_json() используйте wp_send_json() или более высокие функции уровня wp_send_json_success() и wp_send_json_error() . Все они die за вас. После этого не нужно exit или die , как это сделал Пиппин в своем учебнике.

Какой разработчик прав? В Codex, пример использует echo в обратном вызове, так же, как Pippin имеет в своем учебнике.

Пожалуйста, может кто-нибудь уточнить? Я получаю противоречивые советы, и я смущен этой темой.

Solutions Collecting From Web of "Как правильно обрабатывать запросы ajax с помощью плагинов ajax"

ТЛ; др

Оба способа в порядке, пока вы die() ваша AJAX-функция каким-то образом.

Я считаю само собой разумеющимся, что вы хорошо справляетесь с безопасностью – это важно для обоих методов.

Длинный хвост

На самом деле не имеет значения, какой подход вы используете, и это сильно зависит от того, что делает ваш AJAX-Request.

Самое главное, что вы используете функцию, которая выполняет функцию die() для вас, или вы помещаете ее непосредственно в функцию AJAX.

Есть два сценария, которые я могу придумать себе на голову:

Простой запрос контента

Вы делаете простой запрос контента (например, загружаете изображение): в этом случае вы можете эхо-ответа непосредственно в вашей функции AJAX, так что вы можете просто вставить HTML после вызова AJAX.

Если вы выведете <img src="http://img.wordpressask.com/ajax/test.jpg" /> в AJAX, вы можете просто использовать его так:

 success: function(data) { $('#targetcontainer').html(data); } 

Не забудьте положить die() в функцию AJAX!

Комплексные / множественные результаты

С другой стороны, если вы получили несколько результатов или структурированных данных в своем обратном wp_send_json( $results ) , лучшим способом было бы использовать wp_send_json( $results ) .

Первая причина заключается в том, что вы можете передать array или object непосредственно функции, не имея необходимости обрабатывать кодирование и структурирование.

Вторая причина заключается в том, как вы можете обрабатывать данные в своей success .

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

Ну, вы эхом в php, и это то, что возвращается в javascript. Подумайте об этом таким образом, вы инициируете новый запрос на сервер, и то, что вы получаете, является результатом этого запроса, то есть эхом. Это будет работать с WordPress или без него. Я бы не счел неправильной или плохой практикой делать именно это.

Эти функции «высшего уровня» являются отличными вспомогательными функциями, и обычно лучше использовать основные функции WordPress, где это необходимо. Но более важно использовать такие вещи, как nonces, и проверять источники ссылок, чем убедиться, что вы используете вспомогательные функции вместо эха, кодирования и умирания.