在PHP中执行javascript

时间:2010-10-19 18:00:13

标签: php javascript

我相信可以在PHP中执行java脚本函数,但它是否会保留服务器端而不是客户端?我可以在PHP中调用.js函数,传递一些args,并让它返回到调用它的PHP吗?

我想要使用的脚本返回XML,我希望使用PHP获取用户输入,将它们传递给驻留在服务器上的.js函数 ,然后获取返回的xml并解析它回到PHP部分。

我问,因为我看到有人评论说因为.js是客户端而PHP是服务器端,所以他们不相处。我希望通过在PHP中执行.js函数,我可以将.js调用欺骗为来自本地机器(服务器)。

感谢您的任何信息!

4 个答案:

答案 0 :(得分:13)

您无法从PHP本身调用JavaScript。 PHP不是JavaScript引擎。

但是,有一个用于与V8接口的PECL扩展:

您可以与(服务器端)JavaScript引擎连接。看看node.js

答案 1 :(得分:2)

如果您找到了可以调用的服务器端Javascript解释器,那么可以。我没有使用过PHPJS(http://phpjs.berlios.de/),但它可能有用。

听起来你更好的选择是替换js代码,因为你所做的只是听起来不错。

答案 2 :(得分:1)

我认为bpeterson钉了它。但是如果你对AJAX感到不舒服,或者只是需要更多细节。

首先 - 对按钮执行操作(表单提交或其他方式)。行动= “JavaScript的:yourJsFunc()”。这个元素很可能通过PHP上的回声呈现,或者只是静态编写。

下一步 - 获取所需的参数。我建议使用jQuery或DOM方法,即。 $('#blah')或document.getElementById('blah')。val();

然后 - 设置隐藏的输入以存储您的响应,强制提交或执行ajax请求。你有PHP的价值观!

function yourJsFunc()  
{  
   var arg1 = $('#arg1').val //or equivalent DOM method  
   var arg2...  
   //serialize these if necessary  
   var yourXML = outsideJSFunction(arg1, arg2, etc);

   $('#invisibleDiv').html('<form id="yourForm" method="POST"><input type="hidden" name="x" val="'+yourXML+'" /></form>'); 
   $('#yourForm').submit(); 
        //ALTERNATIVELY $.get("other.php", {myXml : yourXml}, function() {//whatever}); 
}  

答案 3 :(得分:0)

这真的不像你看起来那么困难。

  1. 最初使用PHP / HTML呈现页面。
  2. 用户在表单字段中输入信息。
  3. 使用Jquery Serialize函数将数据转换为可以传递的格式(javascript var)。
  4. 将序列化数据传递给您的Javascript以获取所需的XML
  5. 通过AJAX将回复XML结果提交给PHP。
  6. PHP将从Jquery提交的POST作为POST提交并发挥其魔力。
  7. 仅供参考,通过PHP称为XAJAX的AJAX解决方案相对鲜为人知。在这种情况下,它可能不会帮助你太多,但它允许你在PHP函数上进行AJAX调用。虽然PHP没有javascript解释器,但XAJAX和Jquery的Ajax是前端代码与服务器端功能交互的绝佳方式。