2017-10-19 32 views
0

我正在致力於CodeIgniterAJAX。我想要做的是我有一個包含員工列表的數據表。點擊按鈕後,我得到僱員的ID並將其發送給我的控制器,在該控制器中,我從該特定員工的數據庫中獲取所有必要的詳細信息。我已經這樣做了。 我面臨的問題是,如何在使用特定的員工詳細信息成功調用ajax後,如何重定向到viewEmployeeProfile頁面。從ajax調用服務器接收HTML並使用該HTML加載頁面

這裏是我的代碼:

JS

$('#viewAllEmployeeTable tbody').on('click', '.viewEmployeeDetail', function() { 
    var data = viewAllEmployeeTable.row($(this).parents('tr')).data(); 
    employeeID = data.employeeID; 
    $.ajax({ 
     url: "/ackamarackus/employee/viewEmployeeProfile", 
     type: "POST", 
     data: { 
      "employeeID": employeeID 
     }, 
     dataType: "json", 
     success: function(data) { 
      console.log(data); 
     }, 
     error: function(error) { 
      //console.log(error); 
     } 
    }); 
}); 

viewEmployeeProfile功能

public function viewEmployeeProfile() { 
    $employeeID = $this->input->post('employeeID'); 
    $data['employeeBasicDetails'] = $this -> getemployeeBasicDetailsFromDatabase($employeeID); 
    $data['employeeDepartmentalDeails'] = $this -> getemployeeDepartmentalDeailsFromDatabase($employeeID); 
    $data['employeeSalaryDetails'] = $this -> getemployeeSalaryDetailsFromDatabase($employeeID); 
    $data['employeeEducationDetails'] = $this -> getemployeeEducationDetailsFromDatabase($employeeID); 
    $data['employeeJobHistoryDetails'] = $this -> getemployeeJobHistoryDetailsFromDatabase($employeeID); 
    $data['employeeTrainingDetails'] = $this -> getemployeeTrainingDetailsFromDatabase($employeeID); 
    $data['header'] = 'template/header'; 
    $data['sidebar'] = 'template/sidebar'; 
    $data['main_content'] = 'viewEmployeeProfile'; 
    $data['footer'] = 'template/footer'; 

    echo $this -> load -> view('template/template', $data, TRUE); 
} 

模板/模板視圖

//This view is generic and implements templating 
$this->load->view($header); 
$this->load->view($sidebar); 
$this->load->view($main_content); 
$this->load->view($footer); 

請求後console.log(data);給我的HTML viewEmployeeProfile view 我也試圖從$ data數組中回顯內容,如print_r($employeeBasicDetails);,它給了我正確的信息。但我不知道如何加載從Ajax調用收到的HTML視圖?

任何想法如何做到這一點,或者是否有任何這種解決方案的好處,可能是我這樣做都是錯誤的。任何在這個輸入將不勝感激。謝謝。

+0

必須對每個字段進行數據庫調用*看起來非常浪費和低效。爲什麼你不能一次獲取記錄並提取你感興趣的領域?我敢打賭,這是編寫一個自制ORM的結果,但不知道它們應該如何運作。看看[Doctrine](http://www.doctrine-project.org/),[Propel](http://propelorm.org/)和[Eloquent](https://laravel.com/docs/) 5.3 /雄辯)在重新發明車輪之前。 – tadman

+0

使用適當的ORM應該像1一樣簡單。獲取記錄。 2.將字段轉儲爲JSON。 – tadman

+0

@tadman感謝你的好主意,但我稍後會關注它。你的回答不是我在問題 –

回答

0

ajax調用的這一行指定了從服務器返回的數據類型。如果你是輸出HTML,你需要改變它你目前正告訴Ajax請求期待JSON回報

dataType: "json" 

,將其插入到你的頁面,你只需要指定你想要它。創建一個空的span/div然後給它一個id,然後在你的成功回調中,你可以將返回的數據插入到頁面上的那個元素中。假設你的div id是員工,那麼你在成功回調中添加以下內容:

$('#employee').html(data); 
相關問題