组合多个类似的AJAX代码

组合多个类似的AJAX代码,ajax,xmlhttprequest,simplify,Ajax,Xmlhttprequest,Simplify,我有下面的代码与我的网站导航。由于大多数代码都是相同的,我想知道是否有一种方法可以将其浓缩。我是阿贾克斯的新手。谢谢 function web() { if(XMLHttpRequestObject) { var obj = document.getElementById('content'); XMLHttpRequestObject.open("GET", "./nav/web.html"); XMLHttpRequestObject.onreadystatech

我有下面的代码与我的网站导航。由于大多数代码都是相同的,我想知道是否有一种方法可以将其浓缩。我是阿贾克斯的新手。谢谢

function web()
{
if(XMLHttpRequestObject) {
    var obj = document.getElementById('content');
    XMLHttpRequestObject.open("GET", "./nav/web.html");


    XMLHttpRequestObject.onreadystatechange = function()
    {
        if (XMLHttpRequestObject.readyState == 4 &&
        XMLHttpRequestObject.status == 200) {

            obj.innerHTML = XMLHttpRequestObject.responseText;
            }
        }
    XMLHttpRequestObject.send(null);
    }
}

function prices()
{
if(XMLHttpRequestObject) {
    var obj = document.getElementById('content');
    XMLHttpRequestObject.open("GET", "./nav/prices.html");


    XMLHttpRequestObject.onreadystatechange = function()
    {
        if (XMLHttpRequestObject.readyState == 4 &&
        XMLHttpRequestObject.status == 200) {

            obj.innerHTML = XMLHttpRequestObject.responseText;
            }
        }
    XMLHttpRequestObject.send(null);
    }
}

function clientList()
{
if(XMLHttpRequestObject) {
    var obj = document.getElementById('content');
    XMLHttpRequestObject.open("GET", "./nav/clientlist.html");


    XMLHttpRequestObject.onreadystatechange = function()
    {
        if (XMLHttpRequestObject.readyState == 4 &&
        XMLHttpRequestObject.status == 200) {

            obj.innerHTML = XMLHttpRequestObject.responseText;
            }
        }
    XMLHttpRequestObject.send(null);
    }
}

是的,您可以不必为每个流程设置函数,而是内置一个“模板”,用于保存每个请求,然后传递一个变量以供使用

switch(b) { case "web" : XMLHttpRequestObject.open("GET", "./nav/web.html"); break; case "prices" : XMLHttpRequestObject.open("GET", "./nav/prices.html");
这是一个样本

function dameloPapa(a,b,c) {
if (a=="")
  {
  document.getElementById(c).innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById(c).innerHTML=xmlhttp.responseText;
    }
  }
switch(b){
case "web" : XMLHttpRequestObject.open("GET", "./nav/web.html?id"+a); break;
//etc...
}
xmlhttp.send();
这样,您只需使用JavaScript(onclick、onchange等)dameloPapa('variable','op','div_id')调用代码;并在上显示结果


我优化了这样一个可以随时调用的,我把它和PHP,MySQL混合在一起,工作起来很有魅力,希望这有帮助

对于OP的问题,使用这种方法似乎不是一个最佳的解决方案。特别是字符串开关分派的查找…它可以通过多种方式完成,使用jquery、dojo等内置的ajax,现在根据他的要求,它非常简单和干净,我在我的许多脚本中都使用了它,并且工作得非常好,我不认为它有效,认为将时间投入到这种风格的建筑功能上可以更好地用于更具创造性的追求。