Php 从AJAX调用接收数据后,在同一网页上显示接收到的数据
我有2个PHP文件 这是我的第一个PHP文件中的JS脚本代码,它位于EOD标记中。它有两个动态下拉列表,当第二个列表中的一个项目被选中时,它会向第二个PHP文件提交一个AJAX调用,以便向其传递一些数据(变量chosenStudent)-当我收到成功消息时,这似乎工作正常:Php 从AJAX调用接收数据后,在同一网页上显示接收到的数据,php,ajax,Php,Ajax,我有2个PHP文件 这是我的第一个PHP文件中的JS脚本代码,它位于EOD标记中。它有两个动态下拉列表,当第二个列表中的一个项目被选中时,它会向第二个PHP文件提交一个AJAX调用,以便向其传递一些数据(变量chosenStudent)-当我收到成功消息时,这似乎工作正常: $js_array_leadersGroupsName = array("group1", "group2"); $js_array_students_lists = array(["Bob", "Jane"], ["Sal
$js_array_leadersGroupsName = array("group1", "group2");
$js_array_students_lists = array(["Bob", "Jane"], ["Sally", "Tom"]);
$js_array_leadersGroupsName = json_encode($js_array_leadersGroupsName);
$js_array_students_lists = json_encode($js_array_students_lists);
$Content3 = <<<EOD
<form action="" id="myGroupSelectForm" method="post">
<select id="selectGroup">
<option>Choose a Group</option>
</select>
<select id="selectStudent">
<option>Choose a Student</option>
</select>
</form>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script type="text/javascript">
var select = document.getElementById("selectGroup");
var options = {$js_array_leadersGroupsName};
var i;
for(i = 0; i < options.length; i++) {
var opt = options[i];
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
select.appendChild(el);
}
var studentList = {$js_array_students_lists};
var select2 = document.getElementById("selectStudent");
var a = document.getElementById('selectGroup');
a.addEventListener('change', function() {
var i;
for(i = 0; i < options.length; i++) {
if ((this.value) == options[i]) {
var chosenStudentList = studentList[i];
}
}
var select = document.getElementById("selectStudent");
var length = select.options.length;
for (i = length-1; i >= 0; i--) {
select.options[i] = null;
}
var i;
for(i = 0; i < chosenStudentList.length; i++) {
var opt = chosenStudentList[i][0];
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
select2.appendChild(el);
}
}, false);
var b = document.getElementById('selectStudent');
b.addEventListener('change', function() {
var chosenSudent = this.value;
alert(this.value);
$.ajax({
type: "POST",
url: '/path/to/NewFile.php',
data: "userID=" + chosenSudent,
success: function(data)
{
alert("success!");
}
});
}, false);
</script>
EOD;
$Content3 .="\n";
return $Content3;
$js_array_leadersGroupsName=array(“group1”、“group2”);
$js_array_students_lists=数组([“Bob”、“Jane”]、[“Sally”、“Tom”]);
$js\u数组\u领导小组sname=json\u编码($js\u数组\u领导小组sname);
$js_数组_学生_列表=json_编码($js_数组_学生_列表);
$Content3=在我理解您的观点之后,因为您希望将javascript变量解析为php并在同一个php文件中使用它。在这种情况下,我认为这是不可能的,因为当PHP文件已经运行时,正如我所知,它不可能再运行一次。
因此有2种方法可以考虑:
使用post方法提交表单,以便能够使用该变量,但这里的优点是,它对客户端有点不友好李>
。。。
//获取变量$chosenStudent(如果存在)
如果(isset($_POST['chosenStudent'])){
$uid=$\u POST['chosenStudent'];
//在这里写下你对新生的处理
}
...
b、 addEventListener('change',function(){
document.getElementById(“myGroupSelectForm”).submit();
});
用javascript处理所有内容。下面是您可以考虑的代码流。
有两个不同的php文件:文件A和文件B
- 您将所有复杂的过程移动到文件B中
- 在文件A中,您只需使用javascript,将ajax发送到文件B(获取数据或
用于渲染或计算目的的某物)
- 完成所有工作后,只需将表单提交到下一个流程
当您尝试发送post请求时,它会发出“成功”警报还是什么都没有发生?请尝试我在成功函数下面添加的错误函数,您能告诉我它打印出了什么吗?啊,它会收到错误,因为当设置数据类型:“json”时,发送的请求数据和响应必须是json格式的,这意味着在您的php文件中,您必须以json格式回送字符串,如下所示:回送json_encode([“uid”=>$uid]);。关于这一点,您可以参考我上面更新的答案,现在您可以打印出数据回调,如:let selected_user=data.uid;。现在,您可以随时使用这些数据。我还更新了我的答案,他解析数据的方式很好,您不需要JSON对象。危险:jQuery2.x不受支持,不会收到安全更新。升级到jQuery的当前版本。
<?php
if(isset($_POST['userID']))
{
$uid = $_POST['userID'];
echo $uid;
}
?>
...
// Get variable $chosenStudent if existed
if (isset($_POST['chosenStudent'])) {
$uid = $_POST['chosenStudent'];
// Write your processing for new student here
}
...
<script>
b.addEventListener('change', function() {
document.getElementById("myGroupSelectForm").submit();
});
</script>