在IE或者其他的很多浏览器中,如果你每次请求的地址是相同的,浏览器就不会去连接服务器而是去读取缓存,这
样对于很多应用来时是非常好的,可以降低服务器的压力或者减少带宽的使用,但是对于ajax应用,很多都是必须保持
时时的连接与服务器进行交互,所以需要使用一个小技巧,时间戳来使每次的请求地址都不同,从而跳过浏览器的缓存
机制实现每次的请求服务器,这样的功能在图片验证码的时候也是比较常用的一种方法。
console.log("edit"+global.appRoot + "//NewSite.html?p="+ new Date().Format("S"));
传递数据方式
一、打开新的tab页面:
window.parent.toPage("901","order_add.html?user=saller&orderoperate=add&order_id=\"-1\"","新");
通过url传递参数到新打开的页面
/** 接收topage时带来的参数 */
var request = {
QueryString : function(val) {
var uri = window.location.search;
var re = new RegExp("" + val + "=([^&?]*)", "ig");
return ((uri.match(re)) ? (uri.match(re)[0].substr(val.length + 1))
: null);
}
}
使用:orderoperate = request.QueryString("orderoperate");
二、通过dialog打开页面
可以通过url携带参数;
或者$.dialog.data("sitestate", 'add');传递参数
在子窗口获取参数:
siteoperate = $.dialog.data("sitestate");
三、通过ajax向后台传递参数
通过url带参数
或者通过ajax的data参数获取数据 data参数可以是js类的形式或者jsonarray方式
$.ajax({
type : "get",
url : global.appRoot + ...........="+(new Date()).getTime(),
data :param,
dataType : "json",
success : function(ret) {
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
});
var param={}
param.id="001"
或者
var param={
"addORedit" : addORedit,
"siteid" : siteid
},
注意两个问题:
问题一:缓存问题
ajax请求时候 url : global.appRoot + "/request/order/geteditsiteinfo?timestamp="+(new Date()).getTime(),加个时间戳解决这类问题
问题二:中文编码问题
通过url传递的参数其中数字英文不乱码,但是中文会乱码,采用encodeURL处理