Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从AJAX调用接收数据后,在同一网页上显示接收到的数据_Php_Ajax - Fatal编程技术网

Php 从AJAX调用接收数据后,在同一网页上显示接收到的数据

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

我有2个PHP文件

这是我的第一个PHP文件中的JS脚本代码,它位于EOD标记中。它有两个动态下拉列表,当第二个列表中的一个项目被选中时,它会向第二个PHP文件提交一个AJAX调用,以便向其传递一些数据(变量chosenStudent)-当我收到成功消息时,这似乎工作正常:

$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>