Web

Вызов функции php из JavaScript

Есть ли способ запустить функцию php через функцию JavaScript?

Если использовать что-то вроде этого:

<script type="text/javascript">

function test(){

document.getElementById("php_code").innerHTML="<?php 

query("hello"); 

?>";    

}

</script>

 

<a href="#" style="display:block; color:#000033; font-family:Tahoma; font-size:12px;"     

onclick="test(); return false;">Тест</a>

<span id="php_code">

</span>

 

Я пытаюсь запустить функцию php query("hello"), когда нажимаю на ссылку «Тест», которая вызывает функцию php.

 

Ответ 1

Ваша страница загружается, и вы добавляете событие к элементу. Когда пользователь вызывает событие, например, кликая по ссылке, Javascript использует объект XMLHttpRequest для отправки запроса на сервер.

После того как сервер отвечает (предположительно, с выводом), ваша функция/событие Javascript дает вам возможность работы с этим выводом, в том числе просто вставляя его на страницу, как любой другой фрагмент HTML.

Вы можете сделать это «вручную» с помощью простого Javascript или использовать jQuery. В зависимости от размера вашего проекта и конкретной ситуации, может быть проще использовать простой Javascript.

 

Обычный Javascript

В этом очень простом примере мы отправляем запрос, когда пользователь кликает по ссылке. Сервер будет генерировать некоторый контент, в данном случае «hello world!». И будет генерироваться HTML-элемент с идентификатором output.

JavaScript

// обработчик события по ссылке, который отправляет запрос

function getOutput() {

  getRequest(

      'myAjax.php', // URL на PHP файл

       drawOutput,  // Обработчик успешного завершения операции

       drawError    // Обработчик ошибки

  );

  return false;

}  

// Обработчик отображения ошибки

function drawError() {

    var container = document.getElementById('output');

    container.innerHTML = 'Ошибка!';

}

// Обработчик успешного завершения операции

function drawOutput(responseText) {

    var container       = document.getElementById('output');

    container.innerHTML = responseText;

}

 

function getRequest(url, success, error) {

    var req = false;

    try{

        req = new XMLHttpRequest();

    } catch (e){

        try{

            req = new ActiveXObject("Msxml2.XMLHTTP");

        } catch(e) {

            try{

                req = new ActiveXObject("Microsoft.XMLHTTP");

            } catch(e) {

                return false;

            }

        }

    }

    if (!req) return false;

    if (typeof success != 'function') success = function () {};

    if (typeof error   != 'function') error   = function () {};

    req.onreadystatechange = function(){

        if(req.readyState == 4) {

            return req.status === 200 ? 

                success(req.responseText) : error(req.status);

        }

    }

    req.open("GET", url, true);

    req.send(null);

    return req;

}

 

HTML

<a href="#" onclick="return getOutput();">Тест</a>

<div id="output">Ожидание ответа</div>

 

PHP

<?php

  echo 'hello world!';

?>

 

С библиотекой jQuery и т. п.

Конечно, этот код можно сократить, уплотнив блоки или используя более лаконичные логические операторы. 

Используя HTML и PHP, вот скрипт с jQuery:

// Обработчик события

function getOutput() {

   $.ajax({

      url:'myAjax.php',

      complete: function (response) {

          $('#output').html(response.responseText);

      },

      error: function () {

          $('#output').html('Ошибка!');

      }

  });

  return false;

}

 

Ответ 2

Единственный способ запустить PHP из JS - это AJAX. Вы можете отправить данные на сервер (например, используя GET /ajax.php?do=someFunction), а затем в ajax.php:

function someFunction() {

    echo 'Ответ';

}

 

if ($_GET['do'] === "someFunction") {

    someFunction();

}

 

После этого перехватите ответ с помощью JS (используя jQuery для выполнения запросов AJAX).

Возможно, вам понадобится какой-то формат ответа. Можно использовать JSON или XML, но JSON легко использовать с JavaScript. В PHP вы можете использовать функцию json_encode($array), которая получает массив в качестве аргумента.

Схожие статьи

Web

Как сделать списки HTML, какой из них называется неупорядоченным, как с ними работать

Web

Как заменить кавычки в кодировке Microsoft в PHP

Web

Как выполнить многократную вставку в базу данных с помощью запроса foreach insert в mysql

Блочные и строчные элементы в HTML: подробное руководство
Web

Блочные и строчные элементы в HTML: подробное руководство

×