好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
在PHP中如何调用一个JavaScript函数? 关闭 返回上一级  

在PHP中如何调用一个JavaScript函数?
+ 查看更多

发布日期:2018-03-26 14:12
分类:PHP
浏览次数:102

在PHP中如何调用一个JavaScript函数呢?例如

<?php

  jsfunction();
  // or
  echo(jsfunction());
  // or
  // Anything else?

下面的代码是放在xyz.html的一个点击按钮上的,它调用了一个在外部xyz.js的wait()函数。
这个wait()函数通过AJAX方式调用wait.php。
function wait() 
{
  xmlhttp=GetXmlHttpObject();
  var url="wait.php"; \
  xmlhttp.onreadystatechange=statechanged; 
  xmlhttp.open("GET", url, true); 
  xmlhttp.send(null);
} 

function statechanged()
{ 
  if(xmlhttp.readyState==4) {
       document.getElementById("txt").innerHTML=xmlhttp.responseText;
  }
}

下面的代码是放在xyz.html的一个点击按钮上的,它调用了一个在外部xyz.js的wait()函数。
这个wait()函数通过AJAX方式调用wait.php。

wait.php的代码如下:

<?php echo "<script> loadxml(); </script>";
这个loadxml()函数用同样的方法在另一个php文件中调用。loadxml()函数在某些方面工作地挺好,但并没有以我想要的方式被调用。

回答

简而言之,我们无法在PHP中调用Javascript。因为Javascript是在浏览器或者Nodejs这样的框架中运行的。而不是在Apache这种PHP运行环境中被调用的。
就PHP语言来说(或者其它的web服务器语言),一个HTML页面并不会比一个大的字符串更复杂。在读取数据库和web服务器或其他的数据时,你可以用程序设计语言(例如php)来完成你所想要的任何工作,根本的方法就是牢记一个基本原则:生成HTML字符串。你庞大的html字符串并不会变成比一个web浏览器上加载的数据更多的东西。当浏览器开始加载页面时,所有神奇的东西都开始发生了:布局,盒模型,DOM以及其他东西,包括JavaScript的执行。所以,你并不需要“在php中调用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或其他优秀的框架。
然后,你要明白当你从AJAX调用中收到回应时,你将要开始执行javaScript的代码了。
下面有一个例子,是我认为你应该在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 do
        // 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等。

上一篇在PHP中设置curl的超时参数(timeout)
如何得知是否正在使用HTTPS协议(不通过读取[_SERVER['HTTPS']字段)下一篇
下一篇如何得知是否正在使用HTTPS协议(不通过读取[_SERVER['HTTPS']字段)

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号