ajax 重定向
后端
if("XMLHttpRequest".equals(req.getHeader("X-Requested-With"))){
res.setHeader("SESSIONSTATUS", "TIMEOUT");
res.setHeader("CONTEXTPATH", hostString+"/login");
res.setStatus(HttpServletResponse.SC_FORBIDDEN);
}else{
res.sendRedirect(hostString+"/login");
}
前端
$.ajaxSetup( {
//设置ajax请求结束后的执行动作
complete : function(XMLHttpRequest, textStatus) {
// 通过XMLHttpRequest取得响应头,sessionstatus
var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
if (sessionstatus == "TIMEOUT") {
var win = window;
while (win != win.top){
win = win.top;
}
win.location.href= XMLHttpRequest.getResponseHeader("CONTEXTPATH");
}
}
});
监听浏览器后退按钮
$(function(){
pushHistory();
window.addEventListener("popstate", function(e) {
history.go(-2);
}, false);
function pushHistory() {
var state = {
title: "title",
url: "#"
};
window.history.pushState(state, "title", "#");
}
});
同时提交表单数据和js数据
var goods = $("#form").serialize();
var attrs = $("#table").bootstrapTable('getData');
goods.goodsAttr = attrs;
直接提交goods,后台会报错。因为这个时候goods的Content-Type被指定为“application/x-www-form-urlencoded”,而attrs的Content-Type为“application/json”。
解决办法是将表单数据转换为Object对象,如下:
$.fn.serializeObject = function(){
var o = {};
var a = this.serializeArray();
//将页面表单序列化成一个JSON结构的对象,不是JSON字符串。
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
}
此时需要指定Content-Type为“application/json”,并且要使用JSON.stringify(goods)将对象变成字符串,后台要加上“@RequestBody”。
Ext 行高亮
viewConfig : {
getRowClass : function(record){
return record.get("uploaded") == 0 ? 'highlight' : '';
}
}
fullCalendar设置单元格背景色
events : function(start, end, callback){
//每次点击上一月、下一月都会获取月份,把月份传入后台获取数据
var month = this.getDate().format('YYYY-MM');
$.ajax({
url: createUrl('/sitereservation/getDaysByMonth'),
data: {month: month, roomNumber: roomNumber},
success: function(result){
var data = result.month;
for(var i=0; i<data.length; i++){
$(".fc-bg td[data-date='"+ month + data[i] +"']").css({'background-color': 'red'});
}
}
});
}