【www.gdgbn.com--js教程】

利用xmlhttp ajax自动保存信息完整js代码
function createhttphandler() {
 var httphandler = false;
 
 @if (@_jscript_version >= 5)
  // jscript gives us conditional compilation, we can cope with old ie versions.
  // and security blocked creation of the objects.
  try {
   httphandler = new activexobject("msxml2.xmlhttp");
  }
  catch (e) {
   try {
    httphandler = new activexobject("microsoft.xmlhttp");
   }
   catch (e) {
    httphandler = false;
   }
  }
 
 if (!httphandler && typeof xmlhttprequest != "undefined") {
  httphandler = new xmlhttprequest();
 }
 return httphandler;
}

/**
 * auto saves as draft
 */
function autosavedraft() {
 checks = 0;
 seconds = now();

 var title = encodeuri(addform.title.value);
 var body = encodeuri(addform.body.value);
 var catid = addform.catid.options[addform.catid.selectedindex].value;
 var more = encodeuri(addform.more.value);
 var closed = 0;
 if (addform.closed[0].checked) {
  closed = addform.closed[0].value;
 }
 else if (addform.closed[1].checked) {
  closed = addform.closed[1].value;
 }
 var ticket = addform.ticket.value;

 var querystring = "action=autodraft";
 querystring += "&title=" + title;
 querystring += "&body=" + body;
 querystring += "&catid=" + catid;
 querystring += "&more=" + more;
 querystring += "&closed=" + closed;
 querystring += "&ticket=" + ticket;
 if (formtype == "edit") {
  querystring += "&itemid=" + addform.itemid.value;
  querystring += "&type=edit";
 }
 else {
  querystring += "&blogid=" + addform.blogid.value;
  querystring += "&type=add";
 }
 if (addform.draftid.value > 0) {
  querystring += "&draftid=" + addform.draftid.value;
 }

 xmlhttprequest[0].open("post", goalurl, true);
 xmlhttprequest[0].onreadystatechange = checkmonitor;
 xmlhttprequest[0].setrequestheader("content-type", "application/x-www-form-urlencoded");
 xmlhttprequest[0].send(querystring);

 var querystring = "action=updateticket&ticket=" + ticket;

 xmlhttprequest[1].open("post", goalurl, true);
 xmlhttprequest[1].onreadystatechange = updateticket;
 xmlhttprequest[1].setrequestheader("content-type", "application/x-www-form-urlencoded");
 xmlhttprequest[1].send(querystring);
}

/**
 * monitors the edits
 */
function domonitor() {
 if (checks * (now() - seconds) > 120 * 1000 * 50) {
  autosavedraft();
 }
 else {
  checks++;
 }
}

/**
 * checks the process of the saving
 */
function checkmonitor() {
 if (xmlhttprequest[0].readystate == 4) {
  if (xmlhttprequest[0].responsetext) {
   if (xmlhttprequest[0].responsetext.substr(0, 4) == "err:") {
    goal.innerhtml = xmlhttprequest[0].responsetext.substr(4) + " (" + formatteddate() + ")";
   }
   else {
    addform.draftid.value = xmlhttprequest[0].responsetext;
    goal.innerhtml = lastsavedtext + " " + formatteddate();
   }
  }
 }
}

/**
 * checks the process of the ticket updating
 */
function updateticket() {
 if (xmlhttprequest[1].readystate == 4) {
  if (xmlhttprequest[1].responsetext) {
   if (xmlhttprequest[1].responsetext.substr(0, 4) == "err:") {
    goal.innerhtml = xmlhttprequest[1].responsetext.substr(4) + " (" + formatteddate() + ")";
   }
   else {
    addform.ticket.value = xmlhttprequest[1].responsetext;
   }
  }
 }
}

/**
 * gets now in milliseconds
 */
function now() {
 var now = new date();
 return now.gettime();
}

/**
 * gets now in the local dateformat
 */
function formatteddate() {
 var now = new date();
 return now.tolocaledatestring() + " " + now.tolocaletimestring();
}

本文来源:http://www.gdgbn.com/wangyezhizuo/29475/