2017-03-18 67 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

給出正確的結果 –