如何从JS调用控制器,以便控制器可以执行其请求映射?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从JS调用控制器,以便控制器可以执行其请求映射?相关的知识,希望对你有一定的参考价值。
我正在尝试将javascript文件调用为Java Spring MVC控制器,然后控制器将执行其请求映射功能。
我不确定是否也可以将变量传递给控制器,以便它可以知道要执行的特定映射。如果有人可以证明如何做到两者都会非常有帮助。如果一个人可以简单地向我展示如何通过JS调用控制器,这将非常有帮助并回答问题。
我的控制器看起来类似于以下内容:
@Controller
@RequestMapping(value = "/waterquality/scale")
public class NmWaidsController {
@RequestMapping(value = {"","/"})
public String homePageWaids(){
return "waterquality/scale/calmix";
}
我想让JS调用这个控制器。
如果可能的话,我想执行以下操作,并让JS将变量传递给方法,如下所示:
@Controller
@RequestMapping(value = "/waterquality/scale")
public class NmWaidsController {
@RequestMapping(value = {"","/"})
public String homePageWaids(int viewChoice){
switch(viewChoice){
case 1:
return "waterquality/scale/calmix";
break;
case 2:
return "waterquality/scale/caloddo";
break;
case 3:
return "waterquality/scale/calstiff";
break;
default:
return error;
break;
}
任何帮助将非常感激!提前致谢!
答案
这是您正在寻找的一个例子。
@RequestParam
会帮助你。
首先,JSON对象。
var loginData = {
memberId : "test1",
memberPw : "test2"
}
第二,Ajax。
$.ajax({
type: "POST",
url: "YouActionName",
data: loginData,
success: function (result) {
// do something.
},
error: function (result) {
// do something.
}
});
最后,你的控制器。请记住,RequestParam的键名必须与JSON的成员键名匹配。它区分大小写,所以要小心。
@RequestMapping("/YourActionName")
public String YourActionName(@RequestParam("memberId") String id, @RequestParam("memberPw") String pw ){
return new ModelAndView("ExpectedReturnView");
}
附加事件监听器非常简单。
如果你有像这样的html ...
<div id="exampleDiv"></div>
然后使用基本id选择器,您可以附加如下所示的事件......
$('#exampleDiv').click(function(e) {
// do what you want when click this element.
});
另一答案
<button type="submit" name="deleteAction" onclick="javascript:deleteaction();">Delete</button>
function deleteaction(){
alert("Are you sure you want to delete the data ?");
document.User1.action = "${pageContext.request.contextPath}/deleteUsers";
document.User1.submit();
}
@RequestMapping(value = "/deleteUsers", method = RequestMethod.POST)
public ModelAndView deleteUserDetails(@ModelAttribute("User1") User user,ModelMap model) {
model.addAttribute("User1",new User());
}
希望你能理解这一流程
以上是关于如何从JS调用控制器,以便控制器可以执行其请求映射?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 JS 开发控制台访问用 Chrome 扩展编写的功能?
如何在请求后使 IdentityDbContext 保持活动状态,以便服务可以使用 UserManager 完成其任务?