2017-03-18 75 views
1

我正在使用这个ajax函数通过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); 
    } 
} 

但我没有收到来自它的输出结果,我在做什么错?

+0

使用的console.log(数据),即可看到返回的输出,也解析json在使用返回数据对象之前。 –

+0

尝试在分配$('#course')。val()'的结果后,通过'console.log'输出'course'。如果没有定义,你将得不到回应。 –

+0

@TobiasF。我已经输出了课程和部门价值,他们工作得很好。 –

回答

1

您的Ajax调用需要JSON(dataType: 'json'),但是您不会通过PHP输出返回JSON,因为默认内容类型为text/html而不是application/json。在你的JSON输出之前,在echo之前添加适当的Content-Type标题。

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

其实我之前也使用过json,而且他们在单个post变量下工作正常。 –

0

您回应一个数组,所以你要访问的数据元素,通过索引一个数组..

例如,对于第一个元素

 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($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); 
    } 
+0

仍然不能正常工作 –

+0

我已经更新了一个简短的建议 – scaisEdge

+0

的答案只是为了测试尝试更新你发布和添加.. var_dump(json_encode($ temp)); .. – scaisEdge

0

我刚刚改变航向的变量名和我的功能开始工作,不知道为什么是这样的:

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

它给你从你的查询预期的结果,或只是“不可用”? –

+0

给出正确的结果 –