Javascript 在<;中设置PHP变量;noscript>;

Javascript 在<;中设置PHP变量;noscript>;,javascript,php,noscript,Javascript,Php,Noscript,以下类似的内容不起作用: <?php $nojs = false; ?> <noscript> <?php $nojs = true; ?> </noscript> 无论是否启用JS,都会执行PHP。但有没有办法获得类似的效果?我试图设置一个标志,如果JS被禁用,然后相应地显示部分页面。PHP在javascript之前执行,所以您不能这样做。成功查询ajax页面后,您可以执行一些操作,例如执行基本ajax请求并将hasjs存储在会话变

以下类似的内容不起作用:

<?php $nojs = false; ?>
<noscript>
    <?php $nojs = true; ?>
</noscript>


无论是否启用JS,都会执行PHP。但有没有办法获得类似的效果?我试图设置一个标志,如果JS被禁用,然后相应地显示部分页面。

PHP在javascript之前执行,所以您不能这样做。成功查询ajax页面后,您可以执行一些操作,例如执行基本ajax请求并将
hasjs
存储在会话变量中。您不知道这是否只是由于其他原因导致ajax请求未成功,或者是否禁用了Javascript

不管怎样,让我们来试一试:

头标签中的jquery脚本

$(文档).ready(函数(){
$.get(“hasjs.php”,{hasjs:“1”});
});
PHP文件(hasjs.PHP)


然后,您可以访问会话变量以确定它们是否具有基于ajax查询的JS。如果用户没有安装JS,则不会阻止用户访问该页面。

然后会为会话存储会话变量,如果用户禁用Javascript但仍保持会话活动,该怎么办?编辑我想我可以基于$\u SESSION值设置一个PHP标志,然后取消设置$\u SESSION变量。您可以在每页PHP处理结束时将
hasjs
设置为0。唯一会出现问题的方法是,如果用户在页面加载后禁用JS。据我所知,在这方面确实做不了多少。你可以这样做,你的内容加载基于JS,这样他们有一个真正的坏时间,如果他们试图禁用它。例如,通过JS/AJAX等提交表单
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$( document ).ready(function() {
    $.get( "hasjs.php", { hasjs: "1"} );
});
</script>
<?php
if(isset($_GET['hasjs']))
{
    session_start();
    $_SESSION['hasjs'] = 1;
}
?>