Php Ajax函数不返回任何输出

Php Ajax函数不返回任何输出,php,jquery,ajax,mysqli,Php,Jquery,Ajax,Mysqli,我使用这个ajax函数通过ajax获取两个下拉列表的选项,但它不返回任何输出。 嗨,这是我的ajax功能: <script> $('#department').on('change',function(){ var department = $(this).val(); var course = $('#course').val(); if(department){ $.ajax({ type:'POST',

我使用这个ajax函数通过ajax获取两个下拉列表的选项,但它不返回任何输出。 嗨,这是我的ajax功能:

 <script>
$('#department').on('change',function(){
    var department = $(this).val();
    var course = $('#course').val();
    if(department){
        $.ajax({
            type:'POST',
            url:'ajaxData.php',
            dataType: 'json',
            cache: false,
            data:{department: department, course: course },
            success: function(data){
                $('#head_name').html(data.head_name);
                $('#email').html(data.email);
            }
        }); 
    }else{
        $('#head_name').html('<option value="">Select Department first</option>'); 
        $('#email').html('<option value="">Select Department first</option>'); 
    }
});
</script>
这是我的查询代码:

if(isset($_POST["department"]) && isset($_POST["course"])){
    //Get all courses data

    $query = $db->query("SELECT head_name, email FROM head WHERE course = '".$_POST['course']."' AND department = '".$_POST['department']."' ");

    //Count total number of rows
    $rowCount = $query->num_rows;

    //Display result list
    if($rowCount > 0){
        while($row = $query->fetch_assoc()){

            $temp = array('head_name' => '<option value="'.$row['head_name'].'">'.$row['head_name'].'</option>', 'email' => '<option value="'.$row['email'].'">'.$row['email'].'</option>' );
            echo json_encode($temp);
        }
    }else{
        $temp = array('head_name' => '<option value="">Not avaialble </option>', 'email' => '<option value="">Not avaialble </option>' );
        echo json_encode($temp);
    }
}

但是我没有从中得到输出结果,我做错了什么?

您的Ajax调用需要JSON数据类型:“JSON”,但您不会通过PHP输出返回JSON,因为默认的内容类型是text/html而不是application/JSON。在回显JSON输出之前添加适当的内容类型头

header('Content-Type: application/json');
echo json_encode(array('something' => 'else'));

您回显一个数组,所以应该通过索引以数组的形式访问数据元素

第一元素的eg

       success: function(data){
            $('#head_name').html(data[0].head_name);
            $('#email').html(data[0].email);
        }
最终尝试jsonParse数据

       success: function(data){
             jsonData = JSON.parse(data);
            $('#head_name').jsonData(data[0].head_name);
            $('#email').jsonData(data[0].email);
        }
在while中,应该使用数组来存储值

        while($row = $query->fetch_assoc()){

        $temp[] = array('head_name' => '<option value="'.$row['head_name'].'">'.$row['head_name'].'</option>', 'email' => '<option value="'.$row['email'].'">'.$row['email'].'</option>' );
        echo json_encode($temp);
    }

当然,我刚刚更改了变量名,我的函数开始工作,不知道为什么会这样:

data:{ department: department, courseid: course},

使用console.logdata查看返回输出,并在使用返回数据对象之前解析json。在分配$'course'.val的结果后,尝试通过console.log输出课程。如果没有定义,您将不会得到任何响应。@TobiasF。我已经输出了课程和部门值,它们工作正常。我认为你应该试试@scaisEdge的答案,他似乎是对的。如果你还不知道,你的代码很容易受到SQL注入攻击。改为使用参数化查询。事实上,在此之前我也使用过json,并且它们可以很好地处理单个post变量。仍然不起作用,如果我只发送了我要求的数据中的一个变量,那么还有一件事是起作用的。查看结果。var_dump json_encode$temp。。如果你让我看看结果。我可以评估它,否则。。我什么都不能告诉你var\u dump json\u encode$temp;是否输出任何内容Hey buddy看起来我只需要重命名变量值,当然,函数正在运行Hi@scaisEdge,我在这方面又遇到了一个问题,实际上,如果数据库中有一条记录,该函数运行良好,但如果有多条记录,则不会显示值,可能是我不知道如何填充json数组,你能帮我吗?它是给你查询的预期结果,还是不可用?