Php Ajax函数不返回任何输出
我使用这个ajax函数通过ajax获取两个下拉列表的选项,但它不返回任何输出。 嗨,这是我的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',
<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数组,你能帮我吗?它是给你查询的预期结果,还是不可用?