最近做索引,在action处理中,如果注释掉更新索引的方法,Ajax则可以正常响应,但是取消注释,则后台处理完成了,数据库的数据更新,索引的文档更新都完成后,页面却无任何反应,刚开始以为是ajax响应问题,所以网上找到这篇文章,不过,后来发现我的项目中并不是由于这个问题的所在,故不知该文是否是解决该问题的最终方案,但还是先收藏该文,以备后用。
XML/HTML代码
/*
var http_request=false;
function send_request(url,method,postStr){//初始化,指定处理函数,发送请求的函数
http_request=false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
http_request=new XMLHttpRequest();
if(http_request.overrideMimeType){//设置MIME类别
http_request.overrideMimeType("text/xml");
}
}
else if(window.ActiveXObject){//IE浏览器
try{
http_request=new ActiveXObject("Msxml2.XMLHttp");
}catch(e){
try{
http_request=new ActiveXobject("Microsoft.XMLHttp");
}catch(e){}
}
}
if(!http_request){//异常,创建对象实例失败
window.alert("创建XMLHttp对象失败!");
return false;
}
//确定发送请求方式,URL,及是否同步执行下段代码
http_request.open(method,url,true);
//不加下边这段POST不成功 具体做啥的不知道
http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
if(method=="GET"){
http_request.send(null);
}else{
http_request.send(postStr);
}
}
*/
var http_request;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}else if (window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
}
}
function send_request(url,method,postStr) {
createXMLHttpRequest();
//http_request.setRequestHeader("If-Modified-Since","0");
http_request.open(method,url,true);
http_request.setRequestHeader("If-Modified-Since","0");
if(method=="GET"){
http_request.send(null);
}else{
http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
http_request.send(postStr);
}
}
//处理返回信息的函数
function processrequest(){
//alert(http_request.readyState);
//alert(reobj);
if(http_request.readyState==4){//判断对象状态
if(http_request.status==200){//信息已成功返回,开始处理信息
document.getElementById(reobj).innerHTML=http_request.responseText;
}
else{//页面不正常
alert(http_request.readyState);
alert("您所请求的页面不正常!");
}
}
}
function dopage(obj,url){
document.getElementById(obj).innerHTML="正在读取数据...";
//alert(url);
send_request(url,"GET");
reobj=obj;
http_request.onreadystatechange=processrequest;
//http_request.onreadystatechange=alert(http_request.readyState);
}
//下拉菜单 跳转选择静态第一页
function GoToWhere(s,p)
{
var obj='result';
var d=s.options[s.selectedIndex].value;
surl="detail_list.php?status=2&pro_id="+p+"type="+d;
document.getElementById(obj).innerHTML="正在读取数据...";
send_request(surl,"GET");
reobj=obj;
//alert(http_request.readyState);
http_request.onreadystatechange=processrequest;
}
//post方法验证用户名与密码是否正确
function getCheck(){
var res =checkfrom();
if(res){
var discuzuser=document.getElementById("discuzuser").value;
if(discuzuser){
document.form2.submit();
}
else{
var username=document.getElementById("username").value;
var password=document.getElementById("password").value;
var postStr = "username="+username+"password="+password;
//ajax post默认是UTF8的 去那边转码了
send_request("http://dp.cnmo.com/checkuser.php","POST",postStr);
http_request.onreadystatechange = function(){
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var http_result2 = http_request.responseText;
if(http_result2){
document.getElementById("checkuser").style.display="";
document.getElementById("checkuser").innerHTML = http_result2;
}else{
document.form2.submit();
}
}
}
}
}
}//end if res
}
关键一句
XML/HTML代码
http_request.setRequestHeader("If-Modified-Since","0");