Javascript 如何将ajax传递给spring控制器

Javascript 如何将ajax传递给spring控制器,javascript,java,jquery,ajax,spring-mvc,Javascript,Java,Jquery,Ajax,Spring Mvc,我在Ajax页面中获取值 function GetInfoDivision() { var data = $("#storeName").val(); $.ajax({ type : "POST", contentType : "application/json", url : "hello", data : JSON.stringify(data), dataType : 'json

我在Ajax页面中获取值

function GetInfoDivision()
{
     var data = $("#storeName").val();
    $.ajax({
        type : "POST",
        contentType : "application/json",   
        url : "hello",
        data : JSON.stringify(data),    
        dataType : 'json',              
        //timeout : 100000, 
        success : function(map) {
            console.log("SUCCESS: ", data);
            display(data);
        },
        error : function(e) {
            console.log("ERROR: ", e);
            display(e);
        },
        done : function(e) {
            console.log("DONE");
        }
    });
但是控制器页面获取空值…Ajax数据值未传递给控制器

@RequestMapping(value="/hello", method = RequestMethod.POST)
        public String employeeLogin(ModelMap model, HttpServletRequest request) {
         String sname = request.getParameter("storeName");   
         System.out.println("s="+sname);    
            shopModel s = new shopModel();
              s.setStoreName(sname);

            //boolean result = employeeService.employeeLogin(employee);
              boolean result =false;
             if(result == true){

                    model.addAttribute("message", "Successfully logged in.");
             }
             else
             {
                model.addAttribute("message", "Username or password is wrong.");
            }
            return "redirect:index.jsp";
        }

您应该在控制器函数的参数中使用
@RequestBody
注释


您应该在控制器函数的参数中使用
@RequestBody
注释


如果storeName只是一个字符串,那么可以使用
@RequestParam

@RequestMapping(value="/hello", method = RequestMethod.POST)
        public String employeeLogin(ModelMap model, HttpServletRequest request,
@RequestParam(value = "storeName", required = false) String storeName) {

String sname = storeName;
}
在Ajax调用中,您可以使用如下调用

url : "hello" + "?storeName=" + data
并在Ajax调用中删除下面的属性

data : JSON.stringify(data), 
您的Ajax将如下所示:

function GetInfoDivision()
{
     var data = $("#storeName").val();
    $.ajax({
        type : "POST",
        contentType : "application/json",   
        url : "hello" + "?storeName=" + data,
        dataType : 'json',              
        //timeout : 100000, 
        success : function(map) {
            console.log("SUCCESS: ", data);
            display(data);
        },
        error : function(e) {
            console.log("ERROR: ", e);
            display(e);
        },
        done : function(e) {
            console.log("DONE");
        }
    });

如果storeName只是一个字符串,那么可以使用
@RequestParam

@RequestMapping(value="/hello", method = RequestMethod.POST)
        public String employeeLogin(ModelMap model, HttpServletRequest request,
@RequestParam(value = "storeName", required = false) String storeName) {

String sname = storeName;
}
在Ajax调用中,您可以使用如下调用

url : "hello" + "?storeName=" + data
并在Ajax调用中删除下面的属性

data : JSON.stringify(data), 
您的Ajax将如下所示:

function GetInfoDivision()
{
     var data = $("#storeName").val();
    $.ajax({
        type : "POST",
        contentType : "application/json",   
        url : "hello" + "?storeName=" + data,
        dataType : 'json',              
        //timeout : 100000, 
        success : function(map) {
            console.log("SUCCESS: ", data);
            display(data);
        },
        error : function(e) {
            console.log("ERROR: ", e);
            display(e);
        },
        done : function(e) {
            console.log("DONE");
        }
    });


你试过不字符串化你的数据吗?@Ivin Raj:你的“数据”只是一个字符串值,你不能只是JSON。像那样字符串化它。要理解,您应该打开Chrome F12开发者工具下的“网络”选项卡,查看实际发送的内容。Restcontroller注释添加到哪里?@HoángLong查看我的更新image@IvinRaj:您的图片显示的是“源”选项卡,而不是“网络”选项卡。您是否尝试过不对数据进行字符串化?@Ivin Raj:您的“数据”只是一个字符串值,你不能就这样把它字符串化。要理解,您应该打开Chrome F12开发者工具下的“网络”选项卡,查看实际发送的内容。Restcontroller注释添加到哪里?@HoángLong查看我的更新image@IvinRaj:您的图片显示的是源选项卡,而不是网络选项卡。可能正在从方法参数中删除
HttpServletRequest
。我编辑了答案。如果需要访问请求对象,可以将其注入类中。可以从方法参数中删除
HttpServletRequest请求。我编辑了答案。如果您需要访问请求对象,可以将其注入类中。如何在Ajax数据@Amit K Bistit中使用多个值可以,但我需要在Ajax数据@Amit K Bistit中传递多个值取决于您是想以
@RequestParam
还是
@RequestBody
的形式传递多个值?,如果您想以
@RequestParam
的形式传递给控制器,那么您可以执行类似于
“hello”+?storeName=“+data+”&secondParam=“+secondParamValue
的操作,或者您可以将ajax中的数据节点作为
数据传递:({storeName:data,secondParam:secondParamValue})
并且url应该只有url:“hello”在ajax调用中.call如下所示:
var firstParamValue=$(“#firstParam”).val();var secondParamValue=$(“#secondParam”).val();$。ajax({type:“POST”,contentType:“application/json”,url:“hello”,数据:({firstParamName:firstParamValue,secondParamName:secondParamValue}),数据类型:'json',成功:函数(map){console.log(“成功:,数据);})控制器类似于
公共字符串employeeLogin(@RequestParam(“firstParamName”)字符串firstParamName,@RequestParam(“secondParamName”)字符串secondParamName,ModelMap模型,HttpServletRequest请求)
如何在Ajax data@Amit K Bistit中传递多个值可以,但我需要在Ajax data@Amit K Bistit中传递多个值,这取决于您是想以
@RequestParam
还是
@RequestBody
的形式传递多个值?,如果您想以
@RequestParam
的形式传递给控制器,那么您可以执行类似于
“hello”+?storeName=“+data+”&secondParam=“+secondParamValue
的操作,或者您可以将ajax中的数据节点作为
数据传递:({storeName:data,secondParam:secondParamValue})
并且url应该只有url:“hello”在ajax调用中.call如下所示:
var firstParamValue=$(“#firstParam”).val();var secondParamValue=$(“#secondParam”).val();$。ajax({type:“POST”,contentType:“application/json”,url:“hello”,数据:({firstParamName:firstParamValue,secondParamName:secondParamValue}),数据类型:'json',成功:函数(map){console.log(“成功:,数据);})控制器将类似于
公共字符串employeeLogin(@RequestParam(“firstParamName”)字符串firstParamName,@RequestParam(“secondParamName”)字符串secondParamName,ModelMap model,HttpServletRequest request)