如何在Jquery请求期间从php运行Javascript函数?

时间:2012-02-09 16:43:24

标签: php javascript jquery smarty

我需要一种在PHP的Jquery请求期间调用Javascript函数的方法。

我的网站的所有resquest都是通过函数从Jquery获得的:Post(),get()和getJson(),但是当尝试从php调用javascript时没有任何反应。 :(

如果我使用提交的html javascript运行良好。


那么我想知道在这种情况下我需要为javascript工作做些什么?

示例I

我在index.php中的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>

我想点击按钮“Message with Jquery”然后我的php调用函数javascript“Message”。

证明需要: 我可以直接在jQuery回调中调用这个JavaScript。问题是谁知道何时运行这个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 个答案:

答案 0 :(得分:2)

你在这里有误解。

JQuery是一个Javascript库。两者都在客户端(浏览器)上运行。

PHP在Web服务器上运行。因此不运行Javascript。

您可以从Web服务器获取Javascript以请求JSON等 - 可以使用PHP

传递数据

答案 1 :(得分:0)

你可以回应JS

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

答案 2 :(得分:0)

你的意思是?此代码未经过测试

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按摩!”

答案 3 :(得分:0)

所以你想告诉javascript在做ajaxy magic之后要做什么。

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

这将有效地执行从服务器返回的任何javascript 在您的PHP中不发送脚本标记,而只发送您想要执行的代码:

echo "Message();"

更简单,更好的解决方案是从服务器返回命令代码,并根据客户端的行为进行操作。通过这种方式,你可以拥有它应该存在的所有javascript。