var xmlHttp;//声明一个XHR对象
//创建一个XHR对象
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
}
//向服务端发起异步请求:GET(入口函数),callback为回调函数名称
function doRequestUsingGET(url, callback) {
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback;
xmlHttp.open("GET", url + "&timeStamp=" + new Date().getTime(), true);
xmlHttp.send(null);
}
//以下是callback函数的定义
function changeNRNRState() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
if (parseInt(xmlHttp.responseText) == 1) {
updateMsgCount("nrnr_count", "rnr_count");
} else {
alert("\u7559\u8a00\u72b6\u6001\u66f4\u65b0\u5931\u8d25!");
location.href = "msg.do?m=admin_msg&state=nrnr";
}
}
}
}
上面这段代码的作用是用户点留言连接后,更新留言的状态,例如:留言的状态为“未读未回复”,点击后状态变为“已读已回复”,回复留言后状态变为“已读已回复”。现在遇到两个问题:
Q1.xmlHttp.responseText返回的字符串在IE7下能通过:xmlHttp.responseText=="ok"的形式作比较,但是在FF3.5和google浏览器2.0下却不能作比较,需要作一个处理才能,比如split()和parseInt()。这是为什么?
Q2.上面的回调函数changeNRNRState()如果有参数应该怎么组织到doRequestUsingGET(url, callback)这个函数里去,让它更具有通用性?我这样尝试这样写,但是通不过:
function doRequestUsingGET(url, callback(oLink)) {
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback(oLink);
xmlHttp.open("GET", url + "&timeStamp=" + new Date().getTime(), true);
xmlHttp.send(null);
}
//创建一个XHR对象
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
}
//向服务端发起异步请求:GET(入口函数),callback为回调函数名称
function doRequestUsingGET(url, callback) {
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback;
xmlHttp.open("GET", url + "&timeStamp=" + new Date().getTime(), true);
xmlHttp.send(null);
}
//以下是callback函数的定义
function changeNRNRState() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
if (parseInt(xmlHttp.responseText) == 1) {
updateMsgCount("nrnr_count", "rnr_count");
} else {
alert("\u7559\u8a00\u72b6\u6001\u66f4\u65b0\u5931\u8d25!");
location.href = "msg.do?m=admin_msg&state=nrnr";
}
}
}
}
上面这段代码的作用是用户点留言连接后,更新留言的状态,例如:留言的状态为“未读未回复”,点击后状态变为“已读已回复”,回复留言后状态变为“已读已回复”。现在遇到两个问题:
Q1.xmlHttp.responseText返回的字符串在IE7下能通过:xmlHttp.responseText=="ok"的形式作比较,但是在FF3.5和google浏览器2.0下却不能作比较,需要作一个处理才能,比如split()和parseInt()。这是为什么?
Q2.上面的回调函数changeNRNRState()如果有参数应该怎么组织到doRequestUsingGET(url, callback)这个函数里去,让它更具有通用性?我这样尝试这样写,但是通不过:
function doRequestUsingGET(url, callback(oLink)) {
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback(oLink);
xmlHttp.open("GET", url + "&timeStamp=" + new Date().getTime(), true);
xmlHttp.send(null);
}
-----------
FF下不行?
oLink 参数是什么呢?且oLink怎么传呢?
function doRequestUsingGET(url, callback) {
createXMLHttpRequest();
xmlHttp.onreadystatechange = callback;
xmlHttp.open("GET", url + "&timeStamp=" + new Date().getTime(), true);
xmlHttp.send(null);
}
callback的实际函数如果带参数,用
doRequestUsingGET("xxx", function(){xxxx(slink);}) 方式调用