- Включить PHP в файлы JavaScript (.js)
- 10 ответов
- 7 лет спустя обновление: Это ужасный совет. Пожалуйста, не делайте этого.
- Выполнение PHP-кода в файлах JavaScript
- ВЫВОДЫ
- 5 Ways To Call PHP File From Javascript (Simple Examples)
- TLDR – QUICK SLIDES
- TABLE OF CONTENTS
- CALL PHP FROM JS
- METHOD 1) AJAX CALL PHP SCRIPT
- METHOD 2) USE FETCH API TO CALL PHP
- METHOD 3) JAVASCRIPT REDIRECTION WITH QUERY STRING
- METHOD 4) JAVASCRIPT FORM SUBMISSION
- METHOD 5) SCRIPT TAG POINTING TO PHP SCRIPT
- DOWNLOAD & NOTES
- SUPPORT
- EXAMPLE CODE DOWNLOAD
- EXTRA BITS & LINKS
- LINKS & REFERENCES
- TUTORIAL VIDEO
- INFOGRAPHIC CHEAT SHEET
- THE END
- 6 thoughts on “5 Ways To Call PHP File From Javascript (Simple Examples)”
- Leave a Comment Cancel Reply
- Search
- Breakthrough Javascript
- Socials
- About Me
Включить PHP в файлы JavaScript (.js)
JavaScript выполняется в браузере пользователя. PHP выполняется на сервере. Их функции не могут вызывать друг друга. Вам нужно понять жизненный цикл того, как PHP создает веб-страницу, включая любой исходный код JavaScript внутри этой страницы, и затем JS запускается в браузере спустя много времени после завершения PHP. Затем, если вам действительно нужно, чтобы клиент и сервер общались друг с другом, посмотрите на XMLHttpRequest (AJAX и др.).
Я в основном делаю AJAX. По сути, я создаю URL в функции JS, которая вызывает PHP через XMLHttpRequest.
10 ответов
7 лет спустя обновление: Это ужасный совет. Пожалуйста, не делайте этого.
Если вам просто нужно передать переменные из PHP в javascript, вы можете иметь тег в файле php/html, используя javascript для начала.
Если вы пытаетесь вызвать функции, вы можете сделать это следующим образом
Прошло почти 6 лет, и время от времени за это голосуют. Это абсолютно ужасный совет. Вы должны строго рассмотреть, почему вам нужно сделать это, и рассмотреть альтернативную структуру. Если эти переменные могут со временем меняться, возможно, создайте конечную точку AJAX, которая представляет то, что вам нужно. Если они действительно имеют значение только во время запроса, по крайней мере, сделайте для каждой из переменных и прочитайте его, а не генерируйте JavaScript с PHP, плюющим в него.
это совершенно бессмысленно и подвержено инъекциям. phpvars = ; гарантированно производить синтаксически правильный JS, в то время как выше , будет убить весь блок сценария , если есть один ‘ или другой JS мета-символ в любом месте вставленного текста.?php>
upvoted, просто чтобы поставить вас в тупик: P — так как это голос с большим количеством голосов, возможно, сделать альтернативный (лучшее решение) часть ответа, а не просто комментарий?
AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js SetHandler application/x-httpd-php
Добавьте вышеуказанный код в файл .htaccess и запустите php внутри js файлов
ОПАСНОСТЬ:. Это позволит клиенту потенциально видеть содержимое ваших файлов PHP. Не используйте этот подход, если ваш PHP содержит какую-либо конфиденциальную информацию (что обычно происходит).
Если вы ДОЛЖНЫ использовать PHP для генерации ваших файлов JavaScript, пожалуйста, используйте чистый PHP для создания всего JS файла. Вы можете сделать это, используя обычный .PHP файл точно так же, как обычно вы выводите html, разница заключается в настройке правильного заголовка с использованием функции заголовка PHP, так что правильный тип mime возвращается в браузер. Тип mime для JS обычно » application/javascript«
Выполнение PHP-кода в файлах JavaScript
В большинстве веб-приложений статические JavaScript-файлы устраивают разработчика на 100%. Однако же иногда бывает лучшим решением подключить PHP и сгенерировать содержимое JS-файла «на лету» (например, получить актуальные цены на продукты из БД и передать их JavaScript-программе для валидации формы заказа). Как же это сделать?
Способ первый: простой
Конечно же, самое простое решение состоит в том, чтобы включить код PHP внутрь секции вашего HTML-шаблона, поскольку есть шансы, что у него будет расширение .php.
Даже если расширение шаблона .htm или .html, то в большинстве случаев веб-сервер настроен так, чтобы понимать включения PHP-кода (если же нет, то в конце заметки есть простой пример как решить и эту проблему). Но что касается красоты, то этот вариант не самый изящный. Хорошо бы держать мух и котлеты раздельно.
Способ второй: красивый
Второй вариант решения — настроить веб-сервер так, чтобы он парсил JavaScript-файлы на предмет выполнения PHP-кода. Достаточно создать в нужной папке файл .htaccess или открыть уже существующий и добавить в него следующие строки:
AddType application/x-httpd-php .js AddHandler x-httpd-php5 .jsSetHandler application/x-httpd-php
Pro et Contra: что нам это дает?
- Вы можете включать PHP-код в файлы с расширением .js и он автоматически выполнится при клиентском обращении к JavaScript-файлу.
- Вы можете держать такие «гибридные» скрипты в отдельной папке — достаточно в эту папку поместить описанный выше файл .htaccess.
- Если вы хотите держать все JavaScript-файлы в одном месте (статические и гибридные), то можете зарегистрировать обработчик файлов с произвольным расширением, например, .js2 — достаточно немного модифицировать текст .htaccess.
- Вы можете разделить статические HTML-страницы, шаблоны и JavaScript-файлы.
- Теоретически это вызовет минимальную дополнительную нагрузку на работу сервера, но, учитывая вариации с отдельными папками или расширениями файлов, польза кажется превосходящей.
Дополнение
Для того, чтобы веб-сервер парсил файлы .htm и .html и выполнял включенный в них PHP-код, нужно добавить в .htaccess следующие строки:
AddType application/x-httpd-php .htm .html AddHandler x-httpd-php5 .htm .htmlSetHandler application/x-httpd-php
Замечания, дополнения и обмен опытом приветствуются.
ВЫВОДЫ
Довольно странно, что небольшая заметка, которая фактически предлагает всего-навсего сниппет для быстрой реализации конкретной практической задачи вызвала такое бурное обсуждение, по большей части похожее на попытки блеснуть теорией. Знаменитое хабра-сообщество в данном случае самоотверженно линчевало те идеи, которые в заметке в принципе не затрагивались. Хотя надо отдать должное — несколько здоровых мыслей все таки есть. И кроме того — нет «никакой другой роскоши, кроме роскоши человеческого общения» (если верить Экзюпери)))).
5 Ways To Call PHP File From Javascript (Simple Examples)
Welcome to a tutorial on how to call a PHP file from Javascript. So you need to call a PHP script to do some processing from Javascript?
- Use AJAX to call a PHP script.
- Use the Fetch API to call a PHP script.
- Redirect the current page to a PHP script.
- Submit a hidden HTML form, an old-school method.
- Finally, an unorthodox method – Dynamically create a script tag that points to a PHP script.
But just how are these done? Let us walk through some examples in this guide – Read on!
TLDR – QUICK SLIDES
TABLE OF CONTENTS
CALL PHP FROM JS
All right, let us now get into the ways and examples of calling PHP from Javascript.
METHOD 1) AJAX CALL PHP SCRIPT
- We have the usual HTML form, using Javascript onsubmit=»return ajaxcall()» to handle the submission.
- Practically grabbing data from the HTML form and submitting it to the server via an AJAX request.
P.S. Use http:// not file:// . Also, cross-domain AJAX calls will not work out of the box – It requires manual settings on the servers to allow cross-origins.
METHOD 2) USE FETCH API TO CALL PHP
If you are wondering if this is similar to AJAX – Yes, it is, fetch() is the so-called “better modern version” of new XMLHttpRequest() . Supposed to offer more advanced options and more flexibility. But please take note, fetch() is not supported in ancient browsers.
METHOD 3) JAVASCRIPT REDIRECTION WITH QUERY STRING
Before the angry trolls rage – I know this is not “directly calling PHP with Javascript”, but this is an old-school method that we use before AJAX and Fetch are even available. Not quite recommended in this modern age, but it still works well.
METHOD 4) JAVASCRIPT FORM SUBMISSION
I know, this is not “directly call PHP with Javascript” again, but this is yet another old-school method. Should be pretty self-explanatory – We simply submit a hidden HTML form using Javascript. This is still pretty handy, just keep it as “a trick up the sleeve”.
METHOD 5) SCRIPT TAG POINTING TO PHP SCRIPT
Negative example warning – This funky way of creating a came from a dark corner of the Internet. While this works, it is also shunned in the modern-day. Just stick with using AJAX or Fetch.
DOWNLOAD & NOTES
Here is the download link to the example code, so you don’t have to copy-paste everything.
SUPPORT
600+ free tutorials & projects on Code Boxx and still growing. I insist on not turning Code Boxx into a «paid scripts and courses» business, so every little bit of support helps.
EXAMPLE CODE DOWNLOAD
Click here for the source code on GitHub gist, just click on “download zip” or do a git clone. I have released it under the MIT license, so feel free to build on top of it or use it in your own project.
EXTRA BITS & LINKS
That’s all for the tutorial, and here is a small section on some extras and links that may be useful to you.
LINKS & REFERENCES
TUTORIAL VIDEO
INFOGRAPHIC CHEAT SHEET
THE END
Thank you for reading, and we have come to the end of this guide. I hope that it has helped you with your project, and if you want to share anything with this guide, please feel free to comment below. Good luck and happy coding!
6 thoughts on “5 Ways To Call PHP File From Javascript (Simple Examples)”
Here’s another nasty way to run some PHP if you dont need to pass data.
Your snippet is removed by the spam/security filter, but no need for “nasty” ways. Just omit the data. xhr.send() fetch(«URL»).then.
Very much appreciate your examples,
I tried the 1a-ajax.html but I get CORS cross origin error
I have to got to about:config & disable the security.fileuri.strict_origin_policy
It is getting harder to do simple things these days.
I wrote a small php script to get data from a wifi device because I was getting cors error in jquery ajax. (If only I could whitelist files or url)
Thanks
I really liked the 4 methods you presented. Prior to my reading your post, I created a successful standard form submission (html form sent to php script). I now want to use the form space to present a message to someone that submits a form from my site. I’ve set up the proper CSS and a couple of js statements to hide the form and reveal the message behind. This requires I submit a form via AJAX call so I don’t require a screen refresh. To that end, I attempted to use your AJAX method, but I’m having difficulty making it work. Could I send you my html, php, & js files for you to review and tell me what I’m doing wrong?
Leave a Comment Cancel Reply
Search
Breakthrough Javascript
Take pictures with the webcam, voice commands, video calls, GPS, NFC. Yes, all possible with Javascript — Check out Breakthrough Javascript!
Socials
About Me
W.S. Toh is a senior web developer and SEO practitioner with over 20 years of experience. Graduated from the University of London. When not secretly being an evil tech ninja, he enjoys photography and working on DIY projects.
Code Boxx participates in the eBay Partner Network, an affiliate program designed for sites to earn commission fees by linking to ebay.com. We also participate in affiliate programs with Bluehost, ShareASale, Clickbank, and other sites. We are compensated for referring traffic.