接下来,我们将探讨本题。
1.SpringMVC接收前台ajax的字符串
前台代码片段
$(function() {
getjson();
});
function getjson() {
var d = 'mingyue';
var s = str= + JSON.stringify(d);
$.ajax({
url : "home.do",
data : s,
ContentType : "application/json;charset=UTF-8",
success : function(data) {
alert(12);
}
});
}
其中注意:d为字符串,在这里我们需要将d转化为json格式,并且加上了"str=",因为我需要在接下来的后台用相同名称的str接收内容。
@Controller
public class HomeController {
@ResponseBody
@RequestMapping(value = "/home")
public String testResult(String str) {
System.out.println(str);
System.out.println(str.length());
return "";
}
}
当需要有参数(如str)接收时,则需要加上@ResponseBody注解。
而@RequestMapping则拦截home.do,之后才能执行testResult方法。
打印结果不用多说。
2.前台ajax接收SpringMVC字符串
$(function() {
getjson();
});
function getjson() {
$.ajax( {
type : "get",
url : "home.do",
success : function(data) {
alert(data);
}
});
}
type默认为“get”
看后台
@Controller
public class HomeController {
@RequestMapping(value = "/home", method = RequestMethod.GET)
public @ResponseBody String getShopInJSON() {
String s = "mingyue";
return s;
}
}
前台的data接收后台的s,也就是"mingyue",再弹出"mingyue"的提示框。
3.SpringMVC接收前台ajax数组
var user = ["mingyue","qingfeng"];
$.ajax({
url : 'home.do',
data: {url:user},
success : function(responseJSON) {
alert('Ok');
}
});
url接收的是数组user。
则后台
@Controller
public class HomeController {
@RequestMapping(value = "/home")
public void add(@RequestParam(value = "url[]", required = false, defaultValue = "") String[] url) {
for (int i = 0; i< url.length; i++) {
System.out.println(url[i]);
}
}
}
@RequestParam接收前台名为url的参数,也就是数组。打印数组的内容。
4.SpringMVC接收前台ajax List集合
var list = new Array();
list.push("1");
list.push(2);
$.ajax({
url : 'home.do',
data: {url:list},
success : function(responseJSON) {
alert('Ok');
}
});
其实list和数组是一样的。
@Controller
public class HomeController {
@RequestMapping(value = "/home")
public void add(@RequestParam(value = "url[]", required = false, defaultValue = "") List url) {
for (int i = 0; i< url.length; i++) {
System.out.println(url[i]);
}
}
}
不再赘述。
5.后台接收ajax字符串,前台ajax接收SpringMVC数组(即复杂参数)
$(function() {
getjson();
});
function getjson() {
var d = 'mingyue';
var s = "str=" + JSON.stringify(d);
$.ajax({
url : "home.do",
data : s,
ContentType : "application/json;charset=UTF-8",
success : function(data) {
var json = eval("(" + data + ")");
alert(json.webname[0].name);
alert(json.webname[1].name);
}
});
}
注意:var json = eval("(" + data + ")");这句话不能少,其作用是将后台传来的字符串(其实是数组)转化为json格式,以便前台识别。
@Controller
public class HomeController {
@ResponseBody
@RequestMapping(value = "/home")
public String testResult(String str) {
System.out.println(str);
String s = "{\"webname\":[{\"name\":\"2\",\"url\":\"aa\"},{\"name\":\"b\",\"url\":\"bb\"},{\"name\":\"c\",\"url\":\"cc\"}]}";
return s;
}
}
当然,少不了domain层。
public class webname {
private String name;
private String url;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
提示框会提示2和b。
第一次写博客,有点丑,不过代码是正确的,本人亲测,都能运行。
别忘了导jar包。下面是jar包。