我有一个下拉菜单,它使用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()!)
提前谢谢!
答案 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回调函数不是显示新页面,而是读取它并用它做你想做的事。