2017-10-19 4 views
0

私はCodeIgniterAJAXを処理しています。私がしていることは、従業員のリストを含むデータテーブルを持っていることです。ボタンをクリックすると私は従業員のIDを取得し、私はその特定の従業員のDBから必要なすべての詳細を取得私のコントローラに送信します。私はすでにこれをしています。 私が直面している問題は、特定の従業員の詳細との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);私にviewEmployeeProfile viewの のHTMLを与えます私はまた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を出力している場合は、現在あなたがちょうどあなたがそれを配置したい場所を指定する必要があなたのページに挿入するには、戻り

dataType: "json" 

でJSONを期待するAJAXリクエストを言っている、それを変更する必要があります。空のspan/divを作成してidを与え、成功コールバックでは返されたデータをページのその要素に挿入することができます。あなたのdiv idが従業員だったとしたら、成功コールバックに以下を追加してください:

$('#employee').html(data); 
関連する問題