一个常见的问题是,对于验证,您需要在服务器和客户端上运行相同的代码。在 JavaScript 繁重的页面上,您希望在双方之间共享许多其他功能。由于您无法在客户端上运行 PHP,因此如果可以从 PHP 运行 Javascript 函数,我会感到很困惑。我正在考虑像Rhino这样的服务器端 JS ,但我不知道如何将它包含到 PHP 中。
4 回答
PHP 有一个 V8 扩展: http: //php.net/manual/en/class.v8js.php从未尝试过那么多,但可能有用
编辑:这里是 pecl 包链接:http ://pecl.php.net/package/v8js
您可以使用服务器端 javascript 服务,即node.js并使用 PHP 调用它,但这不是解决问题的直接或微不足道的解决方案。如果它是一个大型应用程序,在验证逻辑中存在大量交叉,这可能才值得。
在 php 中试试这个:
echo "<script type='text/javascript'>
myfunction();
</script>";
我的感觉和 AlexeyKa 一样。
我认为您需要走相反的路线,而不是在客户端和服务器上运行 JavaScript。在服务器端创建您的验证代码,并在表单提交之前使用 Ajax 调用验证。这样您就可以使用相同的代码进行验证(无重复),并且您不必担心在服务器上运行 JavaScript 引擎。
此外,如果您向客户端提供您将在服务器上运行的验证代码,那么您只是要求某人在您的验证代码中找到一个漏洞。在服务器上保留验证可以使您的验证代码远离用户。
更新:
我没有意识到您的问题不仅仅是验证。这不是 PHP 解决方案,但 Google 的Closure Tools是一种允许您的客户端与您的服务器相同的技术。您编写 UI 模板并定义它们应该如何工作(布局、验证、持久性),然后框架创建 HTML、JavaScript 和服务器代码。这一切都是为了确保您编写一次代码,并且客户端和服务器之间的任何相似代码都由框架处理。