我在javascript jsp中有一个编辑功能,我需要将一本书的ID传递给java方法。在java方法中,我使用该ID从数据库中搜索表格并查找书籍的类型。 (类别) 然后,我需要回到jsp(javascript函数)并将该类型的书加载到字段中。
JSP中的JAVASCRIPT:
<script>
function edit(id) {
jQuery.ajax({
type: "GET",
url: "getId",
data: "id= " + id,
datatype: "text"
});
var type =<%= ((String)request.getAttribute("myType"))%> ;
console.log("type is " + type);
}
</script>
JAVA:
@RequestMapping("/getId")
public void getId(
@RequestParam int id,HttpServletRequest request) {
idBook = id;
System.out.println("get id book "+id);
String type= BookDao.getTypeCategory(id);
request.setAttribute("myType",type);
System.out.println("request attribute"+request.getAttribute("myType"));
}
这样做,来自javascript的类型为null ...如何更改? (来自Java的类型保存了所需的值)。 BookDao.getTypeCategory使用该ID来搜索数据库表并检索所需的类型。
答案 0 :(得分:3)
您需要使用@ResponseBody,并且在ajax内部使用success
回调函数来获取ajax成功的价值。
DataTypeOfReturn
是您要返回的数据类型,可以是int/String
function edit(id) {
jQuery.ajax({
type: "GET",
url: "getId",
data: "id= " + id,
datatype: "text",
success: function(data) {
console.log(data)
}
});
var type = <%= ((String)request.getAttribute("myType"))%>;
console.log("type is " + type);
}
@RequestMapping("/getId")
public @ResponseBody DataTypeOfReturn getId(
@RequestParam int id, HttpServletRequest request) {
int idBook = id; // add data type here to avoid java error
System.out.println("get id book " + id);
String type = BookDao.getTypeCategory(id);
request.setAttribute("myType", type);
System.out.println("request attribute" + request.getAttribute("myType"));
return theValue; // value which you want to return
}