js里面进行ajax请求时,注意:
1,控制层里面需要加上@ResponseBody,使方法返回值转json后返回,否则会出现视图解析器会在前面和后面加上前缀,后缀使之返回一个jsp页面
/WEB-INF/page/
<!-- 定义 视图解析 JSP文件的位置 --> <bean id="viewResolver_system" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/page/" /> <property name="suffix" value=".jsp" /> </bean>
2,因装饰页面也是过滤整个.htm请求,所以此处也需要处理,解决方案有两个,
1> 在excludes里面增加pattern,定义不需要过滤的页面
2>在方法名后面加下Ajax,index,等,过滤不需要的方法 如:
<?xml version="1.0" encoding="UTF-8"?> <decorators defaultdir="/WEB-INF/page"> <!-- 此处用来定义不需要过滤的页面 --> <excludes> <pattern>/mobile/*</pattern> <pattern>/rfid/*</pattern> <pattern>*toCommodityQuery.htm*</pattern> <pattern>*validateLogin.htm*</pattern> <pattern>*Ajax.htm*</pattern> <pattern>*index.htm</pattern> <pattern>*masterDetail.htm*</pattern> <pattern>*adList.htm*</pattern> <pattern>*footList.htm*</pattern> <pattern>*customized.htm*</pattern> <pattern>*designerList.htm*</pattern> <pattern>*designDrawing.htm*</pattern> <pattern>*designDetail.htm*</pattern> </excludes> <!-- 默认装饰页面,在需要装饰的页面增加 <Meta name="decorator" content="default" /> --> <decorator name="default" page="default.jsp"> <pattern>*.htm</pattern> </decorator> </decorators>
如此方法若不加上Ajax,在function data返回的就是一个装饰页面 <pre name="code" class="java"> @RequestMapping(value = "center_checkRfidForFreeRepairClean_Ajax") @ResponseBody public String checkRfidForFreeRepairClean(@RequestParam("rfid") String rfid) { GoodsReturn goodsReturn = goodsReturnService.findByRfidAndStatus(rfid.trim(),GoodsReturnStatus.GOODSRETURN_SUCCESS); if(LogicUtils.isNotNull(goodsReturn)) { return "success"; } else { return ""; } }3,ajax请求,如IE可能还存在游览器缓存问题,所以在请求时,需要增加一个随机数,以确保每个请求都是唯一的。 原文链接:https://www.f2er.com/ajax/164479.html