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

Это довольно просто, правда. Когда вы вносите изменения в свой исходный код, вы хотите подождать 10 минут для его сборки или 20 секунд? Двадцать секунд - это все, что я могу вынести. Кроме того, я либо достаю меч, либо начинаю думать о том, как я могу использовать отдельную компиляцию и связывание, чтобы вернуть его в зону комфорта.

193
задан mithunsatheesh 25 December 2012 в 17:53
поделиться

5 ответов

Что касается 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>

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

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

Вот пример того, что я думаю о вас повторюсь с помощью jQuery 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 и т. Д.

ты только усложняешь себе жизнь. Получите jQuery или один из других отличных фреймворков.

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

Вот пример того, что я думаю о вас повторюсь с помощью jQuery 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 и т. Д.

ты только усложняешь себе жизнь. Получите jQuery или один из других отличных фреймворков.

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

Вот пример того, что я думаю о вас повторюсь с помощью jQuery 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 и т. Д.

ты тоже можешь это сделать.

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

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

ты тоже можешь это сделать.

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

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

346
ответ дан 23 November 2019 в 05:26
поделиться

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

84
ответ дан 23 November 2019 в 05:26
поделиться

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

11
ответ дан 23 November 2019 в 05:26
поделиться

Это невозможно. 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\"";
?>
6
ответ дан 23 November 2019 в 05:26
поделиться

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

3
ответ дан 23 November 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: