关于SpringMVC和ajax的前后台互传数据

 接下来,我们将探讨本题。

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包。

  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值