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

I need a way to call a Javascript function during Jquery request from php.

All resquest of my site is made from Jquery by functions:Post(), get() and getJson(), but when try call a javascript from php nothing happen. :(

If I use submit of the html the javascript run well.


Then I would like to know what I need to do for the javascript work in this case?

Example I

My php code in index.php:

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

My JavaScript:

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

My Jquery code:

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

Html Button:

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

I want click in the button "Message with Jquery" then to my php call the function javascript "Message".

Justifying the need: I could call this JavaScript directly in jQuery callback. The problem is that who knows when to run this JavaScript, Message(), is the client. :? And that jQuery, POST, has several clients. :? My views are reusable and only index.php know which javascript function should be executed or not.

Example II

Other example where the problem apper:

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. :?
?>

Thanks for all!

dsf4354353452
dsf4354353452 Durilka,问题是并非所有时候这个功能“Post”运行功能“Message()”也运行。拥有这种知识的唯一元素是客户端,在这种情况下是php。:(
8 年多之前 回复
doufeixi6014
doufeixi6014 所以你想让你的PHP返回javascript,然后执行?我仍然没有得到你想要的东西。也许你正在寻找$.post(“index.php”,{Action:'Save'},function(){Message();})
8 年多之前 回复
duanjian7343
duanjian7343 和你的Message()函数定义?加上脚本类型属性。
8 年多之前 回复
doujiao1984
doujiao1984 我的php代码<br><?phpecho“<script>Message();</script>”;?>
8 年多之前 回复

4个回答



这里有一个误解。</ p>

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

PHP在Web服务器上运行。 因此不运行Javascript。</ p>

您可以从Web服务器获取Javascript以请求JSON等 - 可以使用PHP传递数据</ p>
</ div>

展开原文

原文

You have a misunderstanding here.

JQuery is a Javascript library. Both run on the client (browser).

PHP runs on the web server. Hence does not run Javascript.

You can get Javascript to request JSON etc from the web server - that may deliver the data using PHP

doutou1922
doutou1922 Ben D,当我使用:echo“<script> Message(); </ script>”; Jquery在字符串中转换“<script> Message(); </ script>”。 但我想执行JavaScript。 :(
8 年多之前 回复
dongnigeng1295
dongnigeng1295 我同意这一点,虽然问题是如此不清楚,很难说他是否真的试图让PHP调用js函数,或者问题是他的jquery ajax调用是不是在评估php生成的javascript,它是以字符串形式输出的 。
8 年多之前 回复

You can echo the JS

<?php
echo '<script>alert("JS in PHP.");</script>';
?>
douchuoxuan3177
douchuoxuan3177 它不工作.. :(
8 年多之前 回复

Do you mean? This code is not tested

mainphp.php (or whatever the file name is)

<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 will have

<?php

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

?>



This will alert the message "Massage with Jquery!" after you post it

dowdw44426
dowdw44426 因为我的视图是可重用的,只有index.php知道应该执行哪个javascript函数。
8 年多之前 回复
duanquan4451
duanquan4451 为什么这个文件甚至必须触发它? 你想要完成什么,我认为你需要更多地解释你的问题。
8 年多之前 回复
dpq755012465
dpq755012465 首先感谢您的回复。 但不幸的是,这不是我的困难。 在这个例子中,index.php必须直接调用mainphp.php中的javascript。 不管怎样,谢谢!
8 年多之前 回复



所以你想告诉javascript做了ajaxy magic之后要做什么。</ p>

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

</ code> </ pre> \ n

这将有效地执行你从服务器返回的任何javascript
你的php不发送脚本标签,而只是你想要执行的代码:</ p>

  echo  “Message();”
</ code> </ pre>

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

展开原文

原文

So you want to tell the javascript what to do after it does the ajaxy magic.

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

this will effectively execute whatever javascript you return from server in your php don't send script tag but simply the code you want to execute:

echo "Message();"

Simpler and better solution will be to return command codes from server and act depending on them in client. this way you'll have all your javascript where it's supposed to be.

duancenxie2233
duancenxie2233 问题不在于安全问题(如果您的服务器受到损害 - 它不再重要),问题是关注点分离,驱动程序驱动器,挖掘机挖掘。
8 年多之前 回复
doushi2047
doushi2047 Durilka,一个恶意用户可能会在网站上注入恶意javascript,有没有办法避免这个安全漏洞?
8 年多之前 回复
doubipeng1336
doubipeng1336 脾气暴躁的男人(php服务器)带你到一些荒地(浏览器)你拿铲子(jquery)并开始挖掘(javascript),然后你问那个男人($ .post)的镐(数据/ javascript),你收到它 并继续工作(使用它/评估它)。 服务器从来没有挖过一小块灰尘。 刚给你工具。
8 年多之前 回复
doucepei5298
doucepei5298 我明白。 只留下一个疑问。 为什么当我点击:<pre> <code> <br> <input type =“submit”value =“没有Jquery的消息!”> <br> <pre> <code>服务器可以在客户端上执行JavaScript吗?
8 年多之前 回复
douyun3799
douyun3799 所以@Ed Heal是对的。 不.PHP在服务器上处理,结果发送到浏览器并由javascript处理。 两台不同的电脑。
8 年多之前 回复
duancan65665
duancan65665 有趣的解决方案! 我在想有一个解决方案,如:<?php $ client ID = jQuery-> Give_me_ Client_id; Execut_JavaScript_In_Cliente($ client ID,“Message()”)。 ?>有吗?
8 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐