我需要一种在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. :?
?>
谢谢大家!
答案 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。