Je travaille sur CodeIgniter
et AJAX
. Ce que j'essaye de faire que j'ai un datatable qui contient la liste des employés. En cliquant sur le bouton, je reçois le ID
de l'employé et l'envoie à mon contrôleur dans lequel je reçois tous les détails nécessaires de la DB de cet employé spécifique. J'ai déjà fait ça. Le problème auquel je suis confronté est que comment puis-je rediriger vers la page viewEmployeeProfile
après un appel ajax réussi avec ce détail spécifique employé.recevoir HTML du serveur dans l'appel ajax et charger la page avec ce HTML
Voici mon code:
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 Fonction
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);
}
vue modèle/template
//This view is generic and implements templating
$this->load->view($header);
$this->load->view($sidebar);
$this->load->view($main_content);
$this->load->view($footer);
après la demande console.log(data)
; me donne le HTML de viewEmployeeProfile view
J'ai également essayé d'écho le contenu du tableau $ data comme print_r($employeeBasicDetails);
et il me donne l'information correcte. MAIS je ne sais pas comment charger cette vue avec le HTML reçu de l'appel ajax?
Une idée de comment faire cela ou y at-il un bon hack pour cette solution, peut-être que je fais tout faux. Toute contribution à cela sera très appréciée. Merci.
avoir à faire un appel de base de données * par champ * semble un gaspillage extraordinaire et inefficace. Pourquoi ne pouvez-vous pas aller chercher le disque en une fois et extraire les champs qui vous intéressent? Je parie que c'est le résultat de l'écriture d'un ORM de brassage à la maison sans comprendre comment ils sont censés fonctionner. Jetez un oeil à [Doctrine] (http://www.doctrine-project.org/), [Propel] (http://propelorm.org/) et [Eloquent] (https://laravel.com/docs/ 5.3/éloquent) avant de réinventer la roue. – tadman
En utilisant un ORM approprié, cela devrait être aussi simple que 1. Récupérer un enregistrement. 2. Dump champs en tant que JSON. – tadman
@tadman Merci pour cette belle idée, MAIS je vais me concentrer dessus plus tard. Votre réponse n'est pas ce que j'ai demandé dans ma question –