我可以使用PHP可以识别的JavaScript创建变量吗?

时间:2010-04-02 08:31:14

标签: php javascript variables

我有一系列PHP语句,如果启用了javaScript,我只想运行它。

if($js_enabled == 'yes') {
   //Run a series of PHP statements
}

我的问题是我想用javaScript创建$ js_enabled变量。因此,如果启用了javaScript,则将创建该变量并运行PHP语句,但如果未启用javaScript,则永远不会创建该变量,并且不会运行PHP语句。

如何使用PHP可以识别的JavaScript创建变量?

5 个答案:

答案 0 :(得分:6)

你可以做到

$browser = get_browser();
if ($browser['javascript'] == 1) {
    // your code here
}

请阅读documentation for get_browser以获取警告,尤其是

  

注意:为了使其正常工作,php.ini中的browscap配置设置必须指向系统上browscap.ini文件的正确位置。   browscap.ini不与PHP捆绑在一起,但您可以在此处找到最新的»php_browscap.ini文件。   虽然browscap.ini包含许多浏览器的信息,但它依赖于用户更新来保持数据库的最新状态。该文件的格式是相当不言自明的。

同时查看评论中给出的链接get_browser:


编辑正如您在评论中正确指出的那样,以上内容不会告诉您JavaScript是否已启用 ,而只是浏览器是否能够运行它。从服务器端发现客户端是不可能的,因为服务器端首先运行。如果有的话,请在服务页面后通知服务器端,例如像@ mck89建议或只是设置一个cookie,您可以在每个后续请求中阅读。

但一般来说,如果您的网站需要启用JavaScript,您只需添加一条消息即可告知用户此要求,例如:

<noscript>This page requires JavaScript to run properly</noscript>

换句话说,不要从PHP检查。只需设置浏览器可能使用的每个变量,如果启用了JavaScript,请考虑使用graceful degradation or progressive enhancement

答案 1 :(得分:2)

为什么不简单地提出ajax请求?如果禁用了javascript,则无法执行ajax请求,因此不会执行PHP脚本,如果启用了javascript,则ajax请求将开始执行PHP脚本。

答案 2 :(得分:1)

您可以将该值存储在隐藏字段中。并在服务器端进行检查。

答案 3 :(得分:1)

如果我非常需要它,我会使用JavaScript在页面上设置一个表单变量(可以隐藏)然后在处理表单时检查它。否则我会让我的页面在没有JS的情况下工作......

答案 4 :(得分:0)

这不可能。 PHP是服务器端,而javascript仅在之后解释已完成php解释并且代码已经位于用户的浏览器中。尝试使用ajax解决方法。如果javascript_enabled - &gt;用ajax调用一些php页面。