Вызов JavaScript с PHP

Я хочу вызвать функцию PHP при нажатии на кнопку, вроде:

<?php function output(){ // do something } ?> <input type="button" value="Enter" onclick="output()"/> 

Я попытался сделать что-то вроде:

 <input type="button" value="Enter" onclick="test.php?execute=1"/> 

где test.php – текущая страница, а затем php

 <? if(isset(&execute)){ echo "Hello"; } ?> 

но это не сработает.

Поскольку PHP работает на веб-сервере, а на клиенте появляются кнопки (и JavaScript в этом случае), вы должны сделать HTTP-запрос на сервер.

Самый простой способ сделать это – использовать форму . JavaScript не требуется. Вы можете добавить JavaScript (хотя он должен быть наложен поверх рабочей версии, отличной от JS ). Использование JavaScript для создания HTTP-запроса, не выходя из страницы, называется Ajax и обычно достигается с объектом XMLHttpRequest . Существуют различные библиотеки, такие как YUI и jQuery, которые могут выполнять некоторые тяжелые операции для вас.

Я думаю, что использование вызова AJAX будет делать то, что вы просите. Я не очень хорошо знаю PHP, но вы можете использовать следующий пример и добавить другую переменную с данными, которые вы передаете на сервер, чтобы указать, какую функцию вы хотите вызывать на сервере. На сервере вы можете добавить некоторые операторы «IF», ​​которые вызывают определенную функцию на основе имени, переданного и возвращающего результат.

Вот что вы можете использовать в своем javascript-клиенте, используя библиотеку jQuery в качестве помощника для вызова AJAX:

  <input type="button" value="Enter" onclick="output()"/> <script type="text/javascript"> function output(){ $.ajax({ type: "POST", url: "submit_data.php", data: "username=" + "SomeUser" + "&email=" + "someEmail@google.com" + "&functionName=" + "theFunction1", success: function(html){ alert('sucess! Result is:' + html); } }); } </script> 

и вы можете использовать такой код, чтобы поймать данные, через которые проходит ваш javascript. В этом примере вы хотели бы назвать это имя файла как «submit_data.php», чтобы соответствовать javascript выше:

 <?php // Variables $Username = $_POST['username']; $Email = $_POST['email']; $FunctionName = $_POST['functionName']; //Add code here to choose what function to call and echo the result // If $FunctionName equals 'theFunction1' then execute theFunction1 // If $FunctionName equals 'theFunction2' then execute theFunction2 echo "You called A Page!"; ?> 

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

PHP – серверная, а javascript – клиентская. Поэтому я не уверен, действительно ли это то, что вы хотите делать?

Возможно, вы могли бы объяснить, почему вы хотите специально вызвать функцию php?

Я искал функцию PHP из кнопки и нашел этот вопрос на webdeveloper.com

Он не использует Javascript.

Это PHP, о котором вы говорите, а не ASP.NET. В PHP нет такой вещи, как событие нажатия кнопки. PHP работает полностью на сервере и абсолютно не знает о событиях на стороне клиента.

Ваша первая попытка не будет работать, потому что код PHP работает только при первой загрузке страницы. Он не запускается при вызове функции JavaScript. Ваш второй пример не будет работать, потому что JavaScript и PHP не могут напрямую разговаривать друг с другом. Попытка напрямую вызвать функцию PHP из JavaScript просто не имеет смысла. Помните, PHP работает только на сервере. К тому времени, когда вы дойдете до точки, где может работать JavaScript, код PHP уже давно завершил свою работу.

Если вы хотите что-то сделать, когда нажата кнопка, вы должны явно отправить запрос на сервер. Вы можете сделать это, просто POSTing формы, как предложил CTphpnwb. Просто имейте в виду, что это перезагрузит страницу, и вам придется вручную сохранить и восстановить состояние страницы, например, заполнить поля ввода. Нет встроенной магии, которая сделает это за вас.

Кроме того, вы можете получить все AJAXy и выполнить POST в JavaScript. Однако вам нужно будет написать JavaScript, чтобы отправить запрос и обработать ответ, и написать серверный PHP-код для обработки запроса. Это становится немного неудобно делать на одной странице.

От: http://www.dreamincode.net/forums/showtopic72353.htm

Вы не можете напрямую вызывать функцию PHP из Javascript таким образом:

  • PHP-код выполняется на сервере
  • HTML / Javascript интерпретируются на стороне клиента.

Одна HTML-страница была сгенерирована и отправлена ​​клиенту (браузеру), больше ничего не может сделать PHP.

Одним из решений было бы использовать запрос Ajax:

  • Событие onclick вызовет функцию Javascript
  • Эта функция Javascript запускает запрос Ajax: запрос, отправленный на сервер
  • Затем сервер выполнит некоторый код PHP
  • И затем верните результат выполнения этого клиенту
  • И вы сможете получить этот результат в своем Javascript-коде и действовать в зависимости от того, что было возвращено сервером.

Существует множество решений для запроса Ajax:

  • Вы можете повторно изобрести колесо; не такой сложный, я должен сказать – но см. следующий пункт
  • Если вы уже используете фреймворк Javascript, например jQuery, Prototype, … Они предоставляют классы / методы / функции для выполнения запросов Ajax

Googling немного даст вам много учебников / примеров, об этом 😉