Je dois renvoyer la liste des employés du contrôleur à jQuery ajax. Comment dois-je faire pour cela?
//controller part
@RequestMapping("phcheck")
public ModelAndView pay(@RequestParam("empid") int empid, String fdate, String tdate) {
ModelAndView mav = new ModelAndView("phcheck");
List<Employee> emp=entityManager.createQuery("select e from Employee e where e.empId="+empid, Employee.class).getResultList();
mav.addObject("emp", emp); <----I need this list of employee in ajax
return mav;
}
Ajax en vue
//Ajax part
$(document).ready(function () {
$("#empid").change(function () {
if ($("#fdate").val() != "" && $("#tdate").val() != "" && $("#empid").val() != "") {
jQuery.ajax({
url: "phcheck.htm?empid=" + $("#empid").val() + "&&fdate=" + $("#fdate").val() + "&&tdate=" + $("#tdate").val(),
success: function (data) {
alert(data + "success");
},
error: function (data) {
alert(data + "error");
}
});
} else {
alert("Please fill the from date and to date or select the employee id");
$("#empid .option").attr("selected", "selected")
}
});
});
Merci d'avance.
J'ai besoin de cette liste d'employé en ajax
Au printemps, lorsque vous avez besoin de la sérialisation, de la désérialisation et de la conversion des messages. dans ce cas, vous devez annoter votre méthode de gestionnaire de contrôleur avec @RequestBody
et @ResponseBody
.
Où:
dans votre cas, vous avez besoin du type JSON, vous devez ajouter @ResponseBody
à la signature de votre méthode ou juste au-dessus de la méthode, et produire et consommer des éléments facultatifs, comme:
@RequestMapping(value="phcheck", method=RequestMethod.GET
produces="application/json")
public @ResponseBody List<Employee> pay(@RequestParam("empid") int empid, String fdate, String tdate) {
//get your employee list here
return empList;
}
et dans AJAX appel, utilisez:
contentType: 'application/json'
indique le type de données que vous envoyez. etdataType: json
indique à jquery le type de contenu de la réponse à recevoir.dans votre cas, contentType: 'application/json'
n'est pas nécessaire, une valeur par défaut, c'est-à-dire 'application/x-www-form-urlencoded; charset=UTF-8'
suffit.
et vous pouvez recevoir la liste des employés dans votre succès AJAX, pour itérer dessus faire comme:
success: function (data) {
$.each(data, function(index, currEmp) {
console.log(currEmp.name); //to print name of employee
});
},
Voir également:
@RequestMapping(value = "phcheck", produces = "application/json")
@ResponseBody
public ModelAndView pay(@RequestParam("empid") int empid, @RequestParam("fdate") String fdate, @RequestParam("tdate") String tdate) {
return entityManager.createQuery("select e from Employee e where e.empId="+empid, Employee.class).getResultList();
}
url:"phcheck.htm?empid="+$("#empid").val()+"&fdate="+$("#fdate").val()+"&tdate="+$("#tdate").val()
Dans Spring MVC, vous devez avoir enregistré MappingJackson2HttpMessageConverter comme si vous le faisiez ici
ModelAndView implique que vous prévoyez de rendre une vue, ce que vous ne faites pas. Pour simplement renvoyer l'objet, utilisez l'annotation @ResponseBody:
@RequestMapping("phcheck")
public @ResponseBody List<Employee> pay(@RequestParam("empid") int empid, String fdate, String tdate) {
return entityManager.createQuery("select e from Employee e where e.empId="+empid, Employee.class).getResultList();
}
En outre, vous devriez faire plus attention à la manière dont vous traitez les requêtes. Votre requête n'est pas sécurisée et permettrait une injection SQL. Par exemple, si quelqu'un appelle votre méthode avec empId = "'15" ou "1" = "1" ", la liste complète des employés sera alors renvoyée.
Définissez la méthode sous la forme @ResponseBody Tapez dans le contrôleur et dans ajax, prenez la fonction List from success.
Placez le fichier Jackson Mapper dans le fichier Pom.xml si vous utilisez Maven.