Как запустить функцию Javascript из php во время запроса Jquery? - PullRequest
0 голосов
/ 09 февраля 2012

Мне нужен способ вызова функции Javascript во время запроса Jquery от php.

Весь запрос моего сайта сделан из Jquery с помощью функций: Post (), get () и getJson (), но при попытке вызвать javascript из php ничего не происходит. (

Если я использую submit html, JavaScript хорошо работает.


Тогда я хотел бы знать, что мне нужно сделать для работы с JavaScript в этом случае?

Пример I

Мой php-код в index.php:

echo "<script>Message();</script>";

Мой JavaScript:

function Message()
{
    alert('JavaScript Executing!');
}

Мой код Jquery:

function Save()
{
    $.post
    (
        'index.php',
        {
            Action: 'Save'
        }
    )
}

Кнопка HTML:

<form>
<br><input type="button" value="Massage with Jquery!" onclick="Save()"><br>
<br><input type="submit" value="Message without Jquery!"><br>
</form>

Я хочу нажать на кнопку «Сообщение с Jquery», а затем на мой php вызов функции javascript «Сообщение».

Обоснование необходимости: Я мог бы вызвать этот JavaScript прямо в обратном вызове jQuery. Проблема в том, что, кто знает, когда запускать этот JavaScript, Message () является клиентом. :? И этот JQuery, POST, имеет несколько клиентов. :? Мои представления могут быть использованы повторно, и только index.php знает, какую функцию JavaScript следует выполнять или нет.

Пример II

Другой пример, когда возникла проблема:

New.tpl

<script src="js/jquery.js" type="text/javascript"></script>
 <script>
function Save()
{
    $.post
    (
        'index.php',
        {
            Action: 'Save'
        }
    )
}
function Message()
{
    alert('JavaScript Executing!');
}
</script>
<form>
<br><input type="button" value="Massage with Jquery!" onclick="Save()"><br>
<br><input type="submit" value="Message without Jquery!"><br>
</form>

index.php

<?php
if( !isset($_POST['Action']))
{
        require_once($_SERVER['DOCUMENT_ROOT']."MeuTreinamentoPHP/smarty/templates/Controler/MySmarty.php");
        $MySmarty=MySmarty::getInstance();
        $MySmarty->Open('new.tpl');
}
echo "<script>Message();</script>";//It is essential that the JavaScript is called in index in this case. :?
?>

Спасибо за все!

Ответы [ 4 ]

2 голосов
/ 09 февраля 2012

У вас здесь недоразумение.

JQuery - это библиотека Javascript.Оба запускаются на клиенте (браузере).

PHP работает на веб-сервере.Следовательно, не запускается Javascript.

Вы можете получить Javascript для запроса JSON и т. Д. С веб-сервера, который может доставлять данные с использованием PHP

0 голосов
/ 10 февраля 2012

Итак, вы хотите сказать javascript, что делать после того, как он выполняет магию ajaxy.

$.post("index.php", 
    {Action: 'Save'}, 
    function(data) { eval(data); }
) 

это эффективно выполнит любой javascript, который вы вернете с сервера в вашем php, не отправляет тег script, а простокод, который вы хотите выполнить:

echo "Message();"

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

0 голосов
/ 09 февраля 2012

Вы имеете в виду?Этот код не проверен

mainphp.php (или как его там)

<script>
    function save(){

    //Lets you know you will be executing
    alert('JavaScript Executing!');

    //Get Value
    var postVal = $("#ButtonValue").val();

    //Post the inputs data to the index file, to save maybe?
    //Then post back what you saved?
    $.post("index.php", { "postVal": postVal },
       function(data) {
         alert(data);
       });

    }
</script>

    //You Have this form, I added an ID

<?php
echo '
    <form>
    <br><input id="ButtonValue" type="button" value="Massage with Jquery!" onclick="Save()"><br>
    <br><input type="submit" value="Message without Jquery!"><br>
    </form>';
?>

Index.php будет иметь

<?php

$postVal = $_POST['postVal'];
echo $postVal;

?>

Это предупредит сообщение «Массаж с Jquery!» после того, как вы отправите сообщение

0 голосов
/ 09 февраля 2012

Вы можете повторить JS

<?php
echo '<script>alert("JS in PHP.");</script>';
?>
...