我相信可以在PHP中执行java脚本函数,但它是否会保留服务器端而不是客户端?我可以在PHP中调用.js函数,传递一些args,并让它返回到调用它的PHP吗?
我想要使用的脚本返回XML,我希望使用PHP获取用户输入,将它们传递给驻留在服务器上的.js函数 ,然后获取返回的xml并解析它回到PHP部分。
我问,因为我看到有人评论说因为.js是客户端而PHP是服务器端,所以他们不相处。我希望通过在PHP中执行.js函数,我可以将.js调用欺骗为来自本地机器(服务器)。
感谢您的任何信息!
答案 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)
这真的不像你看起来那么困难。
仅供参考,通过PHP称为XAJAX的AJAX解决方案相对鲜为人知。在这种情况下,它可能不会帮助你太多,但它允许你在PHP函数上进行AJAX调用。虽然PHP没有javascript解释器,但XAJAX和Jquery的Ajax是前端代码与服务器端功能交互的绝佳方式。