У меня возникли проблемы с тем, чтобы функция успеха jQuery Ajax была работоспособной, и мне было указано, что причина в том, что моя функция PHP использовала return $ result, когда я должен использовать echo $ result.
Изменение функции PHP, которую Ajax вызывал из «return $ result» в «echo $ result», устранил проблему, но почему? Есть много объяснений относительно разницы между двумя (возврат и эхо) с точки зрения PHP-скриптов, но как они отличаются при отправке этого значения на вызов Ajax?
Ну, вызов ajax считывает ответ с сервера, и этот ответ должен отображаться как некоторый тип читаемых данных, таких как application/json
или text/html
.
Чтобы записать эти данные, вам нужно echo
его с сервера с помощью PHP.
Оператор return не записывает данные, он просто возвращается на уровне сервера.
Вызов Ajax использует ответ HTTP-запроса. Сценарий PHP не генерирует вывод, сохраняя его, но эхом.
Ajax вызывает данные так же, как и мы, читает их как строку. Это в основном доступ к другой веб-странице и «получение» результата. «Возврат» PHP возвращает значение только на сервере. Вам нужно фактически выводить данные, чтобы при вызове Ajax на странице, на которую он смотрит, фактически записаны данные.
Команда echo
выводит данные на Standart Output, это в приложениях веб-браузера, клиент, который запросил данные. В CLI напечатайте данные на консоли. И команда return
выйдет из функции со значением, но ничего не печатает.
Если вы хотите общаться между функциями PHP , вам нужно использовать return
. Но если вы хотите вывести некоторые данные, вы должны использовать echo
.