check('123',1); 
check('444',2);
check('345',2);  
function check(opt,id){ //id值是随机的
  switch(id) 
            { 
  case 1: 
    postdata = 'aaaa'; 
    break
  case 2: 
        postdata = 'bbbb'; 
        break
  default: 
        postdata = 'ccc'; 
        break
  } 
  
var x = new cosAjax('HTML'); 
x.post('http://127.0.0.1/add.asp?a='+opt,'',function(s){ 
       alert(opt); //opt的内容都是345
       });当ajax post 3次同时提交时,opt的值为什么3次都是345?? 正常应该弹出一个123和一个444和一个345有什么解决的方法吗? 感谢!!cosAjax:
function cosAjax(recvType) {
var aj = new Object();
aj.targetUrl = '';
aj.sendString = '';
aj.recvType = recvType ? recvType : 'HTML';
aj.resultHandle = null;
aj.createXMLHttpRequest = function() {
   var request = false;
   if(window.XMLHttpRequest) {
    request = new XMLHttpRequest();
    if(request.overrideMimeType) {
     request.overrideMimeType('text/xml');
    }
   } else if(window.ActiveXObject) {
    var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
    for(var i=0; i<versions.length; i++) {
     try {
      request = new ActiveXObject(versions[i]);
      if(request) {
       return request;
      }
     } catch(e) {
     }
    }
   }
   return request;
}
aj.XMLHttpRequest = aj.createXMLHttpRequest();
aj.processHandle = function() {
   if(aj.XMLHttpRequest.readyState == 4) {
    if(aj.XMLHttpRequest.status == 200) {
     if(aj.recvType == 'HTML') {
      aj.resultHandle(aj.XMLHttpRequest.responseText);
     } else if(aj.recvType == 'XML') {
      aj.resultHandle(aj.XMLHttpRequest.responseXML);
     }
    }
   }
}
aj.get = function(targetUrl, resultHandle) {
   aj.targetUrl = targetUrl;
   aj.XMLHttpRequest.onreadystatechange = aj.processHandle;
   aj.resultHandle = resultHandle;
   if(window.XMLHttpRequest) {
    aj.XMLHttpRequest.open('GET', aj.targetUrl);
    aj.XMLHttpRequest.send(null);
   } else {
         aj.XMLHttpRequest.open("GET", targetUrl, true);
         aj.XMLHttpRequest.send();
   }
}
aj.post = function(targetUrl, sendString, resultHandle) {
   aj.targetUrl = targetUrl;
   aj.sendString = sendString;
   aj.XMLHttpRequest.onreadystatechange = aj.processHandle;
   aj.resultHandle = resultHandle;
   aj.XMLHttpRequest.open('POST', targetUrl);
   aj.XMLHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   aj.XMLHttpRequest.send(aj.sendString);
}
return aj;
}
------------------------------------------
这个问题之前问过,http://bbs.csdn.net/topics/390281664 有朋友回答。稍作修改后的这个函数,若利用他的方法还是比较模糊,有无更简易的办法?他的方案是判断函数完成后,再次执行; 有无办法可以同时并发,类似于多线程模式呢?这种方法目前比较模糊

解决方案 »

  1.   

    js中对于function对象:
        没有方法的重载    也就是说方法重名,即使参数不同,依然以最后一次定义的为准
     
        对于如何实现方法的重载,需要用到arguments    arguments:代表当前方法的所有参数值组成的数组,实现类似于重载的效果arguments具体怎么用,我也没有用过,只是以前看资料的时候简单的看到过这样一段内容,
    你自己查一下吧,希望对你有用。
      

  2.   

    你什么浏览器?firefox4和ie8下测试没什么问题