使用jQuery访问更新的php $ _SESSION变量

时间:2013-04-09 21:00:56

标签: php jquery session-variables

我有一个下拉菜单,它使用onChange事件来触发mysqli查询。 该查询使用返回的结果填充数组,而返回的结果又分配给$ _SESSION变量。

每当下拉菜单中的值发生变化时,我都会尝试使用存储在$ _SESSION变量中的数组来填充选择框。

这是相关的JavaScript代码:

xmlhttp.open("POST", "getStudentList.php?q="+yearGroup, true); 
xmlhttp.send();


var newStudentList =<?php echo json_encode($_SESSION['studentList']) ?>; 

    // clear select box 
    $('#studentList').empty();          

    // populate select box with JS array items
    $.each(newStudentList, function(key, value) {   
         $('#studentList')
              .append($('<option>', { value : key })
              .text(value));
    });                     

    $('#studentList').selectmenu("refresh",true);

$ _ SESSION ['studentList']正在'getStudentList.php'中正确更新,但是在重新加载页面之前,Javascript中的调用中没有反映更新...如何自动更新更新? ?

我检查了过去的帖子,但没有发现任何真正有用或我理解的内容!我将不胜感激任何帮助 - 我是一个完全新手使用Javascript / Jquery并在这里和那里拼凑了一些PHP,所以请放轻松我。 (是的,我正在使用session_start()!)

提前谢谢!

2 个答案:

答案 0 :(得分:1)

你可以这样做,

$("#studentList").on('change',function() {
    $.ajax({
        url: "getStudentList.php",
        dataType: "json",
        success: function(newStudentList) {

           // clear select box 
           $('#studentList').empty();          

           // populate select box with JS array items
           $.each(newStudentList, function(key, value) {   
               $('#studentList').append($('<option>', { value : key }).text(value));
           });

           $('#studentList').selectmenu("refresh",true);

        }
    });
});

答案 1 :(得分:0)

只有在生成HTML页面的源代码时才会运行PHP代码。一旦浏览器运行JS代码,PHP就已经运行了,而你的echo已经生成了一串字符,就像你手动输入它一样。

为了运行更多PHP代码,您需要从服务器获取新文件。这是AJAX背后的基本概念:你编写一个JS函数,它要求服务器提供一个新页面,通常包含XML或JSON,但就像任何网页一样。但是,JS回调函数不是显示新页面,而是读取它并用它做你想做的事。