Вызов JavaScript с помощью PHP - PullRequest
       14

Вызов JavaScript с помощью PHP

1 голос
/ 30 августа 2009

Я хочу вызвать функцию 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"; } ?>

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

Ответы [ 6 ]

1 голос
/ 30 августа 2009

Я думаю, что использование вызова 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!";

?> 

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

1 голос
/ 30 августа 2009

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

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

0 голосов
/ 30 августа 2009

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

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

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

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

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

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

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

Погуглив немного, вы получите лотов учебных пособий / примеров, об этом; -)

0 голосов
/ 30 августа 2009

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

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

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

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

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

0 голосов
/ 30 августа 2009

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

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

0 голосов
/ 30 августа 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...