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



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



<?php

jsfunction();
// or
echo(jsfunction());
// or
// Anything else?


следующий код xyz.HTML-код (при нажатии кнопки) он вызывает wait() внешний xyz.js. Это wait() вызовы подождать.РНР.



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;
}
}


и подождать.php



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


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



The loadxml() работает нормально, в противном случае, но это не называется так, как я хочу оно.

681   11  

11 ответов:

что касается PHP (или действительно веб-сервера в целом), HTML-страница-это не что иное, как большая строка.

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

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

Итак, вы не "вызываете JavaScript из PHP", вы "включаете вызов функции JavaScript в свой вывод".

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

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

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

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

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

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

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

вот пример того, что я думаю, что вы делаете с AJAX jQuery

$.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 do
        // 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 и т. д.

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

В настоящее время (февраль 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);
}

?>

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

Это невозможно. 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\"";
?>

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

Если вы хотите выполнить 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 и использовать вывод в PHP http://htmlunit.sourceforge.net/ это ваше решение

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

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

    public function PHPFunction()
    {
            echo '<script type="text/javascript">
                 test();
            </script>'; 
    }
    <script type="text/javascript">
    public function test()
    {
        alert('In test Function');
    }
    </script>

вы не можете быть в состоянии непосредственно сделать это, но 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, получайте удовольствие!

Если вы хотите вызвать метод внутри echo, вы должны заключить их в одинарные кавычки:

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

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

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

<?php
 if(your condition){
     echo "<script> window.onload = function() {
     yourJavascriptFunction(param1, param2);
 }; </script>";
?>

Comments

    Ничего не найдено.