如何从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调用控制器,以便控制器可以执行其请求映射?的主要内容,如果未能解决你的问题,请参考以下文章

学写一个 Java Web MVC 框架

从 Ember 中的控制器操作返回一个承诺?

如何从 JS 开发控制台访问用 Chrome 扩展编写的功能?

Linux 系统调用的内部结构

如何在请求后使 IdentityDbContext 保持活动状态,以便服务可以使用 UserManager 完成其任务?

如何在触发退出 segue 之前执行操作?