记一次开发过程中遇到的坑
话不多说,直接上代码
前台Ajax代码
$(function () {
$.ajax({
url: "warning/info",
type: "post",
cache: false,
success(data) {
$('#overdueExecution').text(data.overdueExecution);
$('#sgOverdue').text(data.sgOverdue);
$('#wgOverdue').text(data.wgOverdue);
}
})
})
后台代码
@Controller
@CrossOrigin(origins = "*",maxAge = 3600) // 解决跨域问题
@RequestMapping("/system/warning")
public class WarningController extends BaseController {
private String prefix = "system/warning";
@Autowired
private IEarlyService earlyService;
@PostMapping("/info")
@ResponseBody
public Map info(){
startPage();
List<OverTimeWarning> list = earlyService.selectOverTimeWarningInfo();
return JSON.toJSONString(list);
}
}
进入页面查看未执行该方法(IE无效,谷歌正常)
问题排查
一开始以为是IE浏览器缓存问题,在Ajax url后添加时间用来确保每次请求都是从服务器上获取,但是发现好像并没有什么卵用,页面根本就未加载该方法,还有说是页面加载了俩个jquery,但我的页面只有一个jquery(排除)
再一次在页面进行查看,发现有一个SCRIPT1003: 缺少 ':'的错误
查看ajax success 发现IE浏览器不支持这种写法,需要加上success:function(data) 如下:
$(function () {
$.ajax({
url: "warning/info",
type: "post",
cache: false,
success:function(data) {
$('#overdueExecution').text(data.overdueExecution);
$('#sgOverdue').text(data.sgOverdue);
$('#wgOverdue').text(data.wgOverdue);
}
})
})