如何使用AJAX为$ _SESSION赋值?

时间:2012-02-13 16:28:08

标签: php javascript ajax

是的,我知道这个问题已经发布了,但是......我正在寻找一种方法来检查客户端是否启用了Javascript。

以下是我的想法:在每个加载页面,PHP都会将$_SESSION['is_js']初始化为0。然后,我希望AJAX(通过启动脚本php?)尝试将$_SESSION['is_js']设置为1。如果启用了JS,AJAX将成功,否则,值仍为0。

我不能使用jQuery或其他库...我必须用纯AJAX编写它(我的意思是不使用框架或librairies ),我不知道如何做到这一点。

修改:我无法使用Cookie。我不想使用<noscript>

4 个答案:

答案 0 :(得分:1)

首先,您需要学习在纯JavaScript中进行ajax调用,某些网站如w3schoolsothers

在ajax调用的php文件中,您可以将会话变量设置为1。

但是可能有更好的方法来查找客户端是否启用了javascript。

编辑:我建议检查你的会话变量是否是,如果没有,请尝试ajax调用并将变量设置为0。如果在页面加载时变量设置且相等,则表示客户端没有启用javascript / xmlhttprequest。

对于会话,cookie存储在客户端。因此,如果客户拒绝存储任何cookie,您将永远不会在会话变量中提供信息。

答案 1 :(得分:0)

我会使用cookie。它的功能几乎相同 -

<?php
$_SESSION['js'] = (int) $_COOKIE['js']
setcookie('js', 0);
?>
<script type="text/javascript">
setCookie('js', 1);
</script>

您可以使用一组Cookie功能,例如http://www.w3schools.com/js/js_cookies.asp

祝你好运!

答案 2 :(得分:0)

一种相当独特(和IMO跛脚)的方法是使用javascript下载假图像:

<script type="text/javascript">
var fake = new Image();
fake.src = "/sess_js.php";
</script>

不使用AJAX,jQuery,Cookies等。

答案 3 :(得分:0)

根据您的想法和您的要求,如果您不能使用jQuery或Prototype等库...您将被强制使用“原始” XMLHttpRequest对象。以下代码就是一个例子。

创建一个名为ajax_js_enabled_test.php的文件并将此代码放入其中:

<?php

    if(isset($_GET['PHPSESSID'])) session_id($_GET['PHPSESSID']);
    session_start();

    if(isset($_SESSION['user_js_support']) && $_SESSION['user_js_support']) echo "Javascript enabled";
    else $_SESSION['user_js_support'] = FALSE;

?>
<script type="text/javascript">
    var XHR;
    if (window.XMLHttpRequest){
        // The code for IE7+, Firefox, Chrome, Opera, Safari
        XHR=new XMLHttpRequest();
    }else{
        // The code for IE6, IE5
        XHR=new ActiveXObject("Microsoft.XMLHTTP");
    }
    XHR.open("GET","http://127.0.0.1/check_js_user_support.php<?php echo '?PHPSESSID='.session_id(); ?>",true);
    XHR.send();
</script>
<p>
    <a href="<?php echo '?PHPSESSID='.session_id(); ?>">
        Refresh
    </a>
</p>

创建另一个名为check_js_user_support.php的文件并将此代码放入:

<?php

    if(isset($_GET['PHPSESSID'])) session_id($_GET['PHPSESSID']);
    session_start();

    $_SESSION['user_js_support'] = TRUE;

?>

复制本地Web服务器根目录中的两个文件。从浏览器打开页面ajax_js_enabled_test.php。 AJAX请求启动,页面check_js_user_support.php将名为user_js_support的会话参数设置为TRUE。因此,通过按下刷新按钮,页面将被重新加载, $ _ SESSION ['user_js_support']将为TRUE ,脚本将写入:“启用Javascript”