Javascript 如何将ajax传递给spring控制器
我在Ajax页面中获取值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
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)