How to get session variables from php server with Ajax function? (PHP HTML JS Ajax)

后端 未结 2 531
挽巷
挽巷 2020-12-29 16:45

so in my php I have something like this

$_SESSION[\'opened\'] = true;

But It will not be set to true until user will perform some actions w

相关标签:
2条回答
  • 2020-12-29 17:44

    Simple jQuery example:

    var session;
    $.ajaxSetup({cache: false})
    $.get('getsession.php', function (data) {
        session = data;
    });
    

    And getsession.php:

    <?php
    session_start();
    print json_encode($_SESSION);
    

    You're not required to use jQuery for AJAX, but I highly recommend it.

    Edit:

    In response to:

    I want to be able to tell my JS function what variable I want to get.

    You can try this (untested):

    var session;
    $.ajaxSetup({cache: false})
    $.get('getsession.php', {requested: 'foo'}, function (data) {
        session = data;
    });
    

    And the PHP:

    <?php
    session_start();
    if (isset($_GET['requested'])) {
        // return requested value
        print $_SESSION[$_GET['requested']];
    } else {
        // nothing requested, so return all values
        print json_encode($_SESSION);
    }
    

    Have a look at the $.get documentation for a more detailed overview.

    0 讨论(0)
  • 2020-12-29 17:46

    PHP File at http://my.host/response.php

    <?php
    session_start();
    if(isset($_SESSION['opened']))
        echo "true";
    ?>
    

    Then in HTML, Add jQuery such as:

    <script type="text/javascript" src="/path/to/jQuery-x.y.z.js"></script>
    

    Then:

    <script type="text/javascript">
        $(document).ready(function(){
            $.ajax({
                url:'/response.php',
                cache:false,
                success:function(data){
                    // Do something with the result
                    if(data=="true"){
                        $('#mydiv').show();
                    }else{
                        $('#mydiv').hide();
                    }
                }
            );
         });
    </script>
    

    And add to myform.php:

    <h1>Some Random HTML</h1>
    <div id='mydiv' class="<?php if(isset($_SESSION['opened']) && $_SESSION['opened']) echo "hidden_class";?>">
     ...</div>
    

    As this will give a consistent experience to those without JavaScript. You don't have to be showing/hiding a div. You could do anything really.

    0 讨论(0)
提交回复
热议问题