回调函数及返回Json的三种方法

回调函数及返回Json的三种方法

1.回调函数:

onreadystatechange 事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。

每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState 属性存有 XMLHttpRequest 的状态信息。

下面是 XMLHttpRequest 对象的三个重要的属性:

 

 

属性

描述

onreadystatechange

存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

readyState

存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

· 0: 请求未初始化(没有调用send方法)

· 1: 服务器连接已建立(socket已连接)

· 2: 请求已接收(获取到了参数,没有执行action方法)

· 3: 请求处理中(已经在执行action方法,未执行完)

· 4: 请求已完成,且响应已就绪(已经响应并且能获取到最终的数据)

status

200: "OK"(响应的状态)

404: 未找到页面(未找到页面)

 

 

onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。

readyState 等于 4 且状态为 200 时,表示响应已就绪:

xmlhttp.onreadystatechange=function()

  {

  if (xmlhttp.readyState==4 && xmlhttp.status==200)

    {

    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

    }

  }

 

2.返回Json的三种方法

第一种:

@Autowired
MyFoodDaoImpl mdi;
/**
 * 原始的输出json方式
 * OutPutStream os;
 * os.write(通过第三方json-lib转换json字符串.getByte())
 * @param foodname
 * @param out
 * @return
 * @throws IOException
 */
@RequestMapping(value="/queryFood",method={RequestMethod.GET,RequestMethod.POST})
public String queryFood(String foodname,OutputStream out) throws IOException{
List> list=mdi.queryAllFood(foodname);
JSONArray arry=JSONArray.fromObject(list);
String jsonStr=arry.toString();
out.write(jsonStr.getBytes("UTF-8"));
return null;
}


第二种:

/**
 * 直接返回 字符数组 +必须写@ResponseBody
 * 减少流的输出动作代码
 * out.write(jsonStr.getBytes("UTF-8"));
 * @param foodname
 * @return
 * @throws IOException
 */
@ResponseBody
@RequestMapping(value="/queryFoodReturn",method={RequestMethod.GET})
public byte[] queryFoodReturn(String foodname) throws IOException{
List> list=mdi.queryAllFood(foodname);
JSONArray arry=JSONArray.fromObject(list);
String jsonStr=arry.toString();
System.out.println(jsonStr.getBytes("UTF-8"));
return jsonStr.getBytes("UTF-8");
}


第三种:

@ResponseBody
	@RequestMapping(value="/queryFoodList",method={RequestMethod.GET})
	public List> queryFoodList(String foodname) throws IOException{
		List> list=mdi.queryAllFood(foodname);
		return list;
	}

配置消息转换器


		
		
			
			
				text/html
				application/x-www-form-urlencoded
			
			
		
		
			
				
					
						text/html
						application/x-www-form-urlencoded
					
				
			
		
	

  	
	  com.fasterxml.jackson.core
	  jackson-core
	  2.6.0
	
	
	  org.codehaus.jackson
	  jackson-core-asl
	  1.9.12
	
	
	  com.fasterxml.jackson.core
	  jackson-annotations
	  2.6.0
	
	
	  com.fasterxml.jackson.core
	  jackson-databind
	  2.6.0
	
	
	  org.codehaus.jackson
	  jackson-mapper-asl
	  1.9.12
	



你可能感兴趣的:(ajax)