Как вызвать функцию JavaScript из PHP?

Как вызвать функцию JavaScript из PHP?

<code><?php

  jsfunction();
  // or
  echo(jsfunction());
  // or
  // Anything else?
</code>

Следующий код отxyz.html (при нажатии кнопки) он вызываетwait() во внешнемxyz.js, этоwait() звонки wait.php.

<code>function wait() 
{
  xmlhttp=GetXmlHttpObject();
  var url="wait.php"; \
  xmlhttp.onreadystatechange=statechanged; 
  xmlhttp.open("GET", url, true); 
  xmlhttp.send(null);
} 

function statechanged()
{ 
  if(xmlhttp.readyState==4) {
       document.getElementById("txt").innerHTML=xmlhttp.responseText;
  }
}
</code>

а такжеwait.php

<code><?php echo "<script> loadxml(); </script>"; 
</code>

гдеloadxml() вызывает код из другого файла PHP таким же образом.

loadxml() иначе работает нормально, но не так, как я хочу.

 Zeeshan Rang25 июн. 2009 г., 21:48
Также мой javascript и php являются внешними.

Ответы на вопрос(11)

попробуй вот так

<?php
 if(your condition){
     echo "<script> window.onload = function() {
     yourJavascriptFunction(param1, param2);
 }; </script>";
?>
Решение Вопроса

Что касается PHP (или, вообще говоря, веб-сервера), HTML-страница не сложнее, чем большая строка.

Вся сложная работа, которую вы можете выполнять с таким языком, как PHP, - чтение из баз данных и веб-сервисов и все такое - конечной целью является точно такой же основной принцип: генерировать строку HTML *.

Ваша большая строка HTML не становится чем-то более особенным, пока она не будет загружена веб-браузером. Как только браузер загрузит страницу,then происходит все остальное: макет, блочная модель, генерация DOM и многое другое, включая выполнение JavaScript.

Таким образом, вы не вызываете JavaScript из PHP, вы включаете вызов функции JavaScript в свой вывод.

Есть много способов сделать это, но вот пара.

Используя только PHP:

echo '<script type="text/javascript">',
     'jsfunction();',
     '</script>'
;

Выход из режима php в режим прямого вывода:

<?php
    // some php stuff
?>
<script type="text/javascript">
    jsFunction();
</script>

Вам не нужно возвращать имя функции или что-либо подобное. Прежде всего, прекратите писать запросы AJAX вручную. Вы только мешаете себе. Получите jQuery или одну из других отличных платформ.

Во-вторых, следует понимать, что вы уже будете выполнять код JavaScript, как только ответ будет получен от вызова AJAX.

Вот пример того, что, по-моему, вы делаете с JJuery AJAX.

$.get(
    'wait.php',
    {},
    function(returnedData) {
        document.getElementById("txt").innerHTML = returnedData;

        //  Ok, here's where you can call another function
        someOtherFunctionYouWantToCall();

        // But unless you really need to, you don't have to
        // We're already in the middle of a function execution
        // right here, so you might as well put your code here
    },
    'text'
);

function someOtherFunctionYouWantToCall() {
    // stuff
}

Теперь, если вы не можете отправлять имя функции из PHP обратно в вызов AJAX, вы тоже можете это сделать.

$.get(
    'wait.php',
    {},
    function(returnedData) {
        // Assumes returnedData has a javascript function name
        window[returnedData]();
    },
    'text'
);

* Или JSON или XML и т. Д.

 11 окт. 2016 г., 16:00
@NilsSens Спасибо за ваш вопрос. Вы все еще не понимаете что-то фундаментальное здесь. PHP и клиентский JavaScript не взаимодействуют друг с другом напрямую. HTTP всегда в середине. Даже с запросами Ajax это так. Чтобы повторить то, что я написал более 7 лет назад в своем первоначальном ответе: при работе в качестве сервера веб-приложений все, что делает PHP, - это генерирует строку HTML, которая может включать или не включать JavaScript.
 13 окт. 2015 г., 04:10
Я хотел бы, чтобы мой учитель был так ясно. Браво!
 06 апр. 2016 г., 00:12
@PeterBailey Большинство людей обычно оскорбляют человека за то, что он сделал этот запрос, и оставляют это на этом. Вы действительно оказали мне действительно конструктивную помощь. так что спасибо тебе :)
 25 июн. 2009 г., 21:54
Конечно же, существует также возможность связывания во внешнем файле javascript, который выполняет сам вызов ... Таким образом, вы сохраняете JavaScript там, где он есть, в коде JavaScript. знак равно
 04 янв. 2015 г., 01:59
Этот парень только что объяснил все, что я делал до сих пор.

PHP работает на сервере. JavaScript работает в клиенте. Поэтому php не может вызывать функцию JavaScript.

 25 июн. 2009 г., 22:24
Строго говоря, это не так. Существует также серверный JavaScript, и теоретически PHP и JavaScript могут быть запущены на сервере и вызывать друг друга. На практике это или, конечно, очень маловероятный сценарий.

В настоящее время (февраль 2012 года) для этого существует новая функция. ПроверьтеВот

Пример кода (взят из Интернета):

<?php

$v8 = new V8Js();

/* basic.js */
$JS = <<< EOT
len = print('Hello' + ' ' + 'World!' + "\\n");
len;
EOT;

try {
  var_dump($v8->executeString($JS, 'basic.js'));
} catch (V8JsException $e) {
  var_dump($e);
}

?>
 17 апр. 2016 г., 04:32
Просто имейте в виду, что это требует установки расширения V8Js для вашей установки PHP.
 25 февр. 2015 г., 15:58
Это может не совсем соответствовать исходному варианту использования вопроса, но, исходя из названия вопроса, этот ответ должен иметь гораздо больше голосов.

Это невозможно. PHP - это язык сервера и клиентский JavaScript, и они действительно мало знают друг о друге. Вам понадобится серверный интерпретатор JavaScript (например, Aptanas Jaxer). Возможно, вы действительно хотите использовать Ajax-подобную архитектуру (функция JavaScript вызывает PHP-скрипт асинхронно и что-то делает с результатом).

<td onClick= loadxml()><i>Click for Details</i></td>

function loadxml()
{
    result = loadScriptWithAjax("/script.php?event=button_clicked");
    alert(result);
}

// script.php
<?php
    if($_GET['event'] == 'button_clicked')
        echo "\"You clicked a button\"";
?>

Вы можете попробовать это также: -

    public function PHPFunction()
    {
            echo '<script type="text/javascript">
                 test();
            </script>'; 
    }
    <script type="text/javascript">
    public function test()
    {
        alert('In test Function');
    }
    </script>
 05 апр. 2017 г., 19:16
-1, так как это не сработает. Вы вызываете и определяете эти функции подъема в двух отдельных блоках. Читатьthis а такжеthis

Я всегда просто используюecho "<script> function(); </script>"; или что-то подобное. Вы технически не вызываете функцию в PHP, но это настолько близко, насколько вы собираетесь получить.

 19 февр. 2019 г., 13:02
Можем ли мы вернуть результатecho в переменную вPHP?
 06 нояб. 2013 г., 21:30
Просто убедитесь, что поместили функцию javascriptbefore эхо-сценарий, или он не может быть вызван.

Возможно, вы не сможете сделать это напрямую, ноXajax Библиотека довольно близка к тому, что вы хотите. Я продемонстрирую на примере. Вот кнопка на веб-странице:

<button onclick="xajax_addCity();">Add New City</button> 

Наше интуитивное предположение было бы, чтоxajax_addCity() такое функция Javascript, верно? Ну, правильно и неправильно. Крутая вещь, которую допускает Xajax, заключается в том, что у нас нет ни одной JS-функции, называемойxajax_addCity(), но у нас есть функция PHP под названиемaddCity() который может делать все, что делает PHP!

<?php function addCity() { echo "Wow!"; } ?>

Подумай об этом на минуту. Мы фактически вызываем функцию PHP из кода Javascript! Этот упрощенный пример был только для того, чтобы разжечь аппетит, лучшее объяснение на сайте Xajax, получайте удовольствие!

Если вы хотите отобразить его для последующего выполнения, все в порядке

Если вы хотите выполнить JS и использовать результаты в PHP, используйте V8JS

V8Js::registerExtension('say_hi', 'print("hey from extension! "); var said_hi=true;', array(), true);
$v8 = new V8Js();
$v8->executeString('print("hello from regular code!")', 'test.php');
$v8->executeString('if (said_hi) { print(" extension already said hi"); }');

Вы можете обратиться сюда для дальнейшей справки: Что такое расширения в php v8js?

Если вы хотите выполнить HTML & JS и использовать вывод в PHPhttp://htmlunit.sourceforge.net/ ваше решение

if you want to call method inside echo you have to enclose them into single quotes:

    function f() {
      //code
      alert("its calling from echo ");
    }

    echo "<td onclick='f();'>".Method calling."</td>";

Вы не можете ". Вы можете вызвать функцию JS из HTMLoutputted с помощью PHP, но это совсем другое дело.

 25 июн. 2009 г., 21:57
В этом примере используется событие click в HTML, а не php. JavaScript на стороне клиента, а php на стороне сервера. Вы не можете напрямую вызывать JavaScript с помощью PHP.
 Zeeshan Rang25 июн. 2009 г., 21:52
я могу вызвать функцию JS, например, так: echo & lt; td onClick = lo, adxml () & lt; i & gt; нажмите для получения подробностей & lt; / i & gt; / td & gt; & .... но я не хочу ничего щелкать сейчас. я просто хочу, чтобы мой php вызывал функцию JS с любым событием.

Ваш ответ на вопрос