function sendSession()//發送採購申請單編碼,并打開採購申請單
{
    var st = "";
    alert(R.length);
    for(var i = 1; i < R.length-1;i++)
    {
        var item = R[i].getElementsByTagName("input");
        if(item[15] != null)
        {
            var pono = document.getElementById("ddlPoNo").value;
            var value = "SELECT * FROM STN_PODet WHERE PONO = '" + pono + "' AND SourceNo = '" + item[15].value + "' AND SourceSerialNo = " + item[16].value +"";            xmlhttp =new ActiveXObject("Microsoft.XMLHTTP");
            xmlhttp.open("Post","../../AjaxComplete.aspx?SQL="+ value +"");
            xmlhttp.onreadystatechange = function IsHaveV()
            {
                if (xmlhttp.readystate==4&&xmlhttp.status==200)  
                {
                    if (xmlhttp.responsetext == "YES" && R[i].getAttribute('state') == 'edit') 
                    {
                        alert(xmlhttp.responsetext+"======"+R[i].getAttribute('state'));
                    }
                    else
                    {
                        if(item[15].value != "")
                        {
                            st += item[15].value +"□"+item[16].value+"□"+item[6].value+"■";
                        }
                    }
                }
            }
            xmlhttp.send(null);
        }
    }
    
    alert(st);
    if(st != "")
    {
        lhgdialog.opendlg( '', '../stone/PUR/ConvertSubscribe.aspx?condition='+st, 650,640,true);
    }
    else
    {
        lhgdialog.opendlg( '', '../stone/PUR/ConvertSubscribe.aspx', 650,640,true);
    }
}有没有办法能够把:
xmlhttp.onreadystatechange = function IsHaveV()
            {
                if (xmlhttp.readystate==4&&xmlhttp.status==200)  
                {
                    if (xmlhttp.responsetext == "YES" && R[i].getAttribute('state') == 'edit') 
                    {
                        alert(xmlhttp.responsetext+"======"+R[i].getAttribute('state'));
                    }
                    else
                    {
                        if(item[15].value != "")
                        {
                            st += item[15].value +"□"+item[16].value+"□"+item[6].value+"■";
                        }
                    }
                }
            }这段改掉,我不想要再去接function应为这样会让我外面的参数全部作废········但是不用   接function 的方法我不知道改怎么做哪位高手帮个忙

解决方案 »

  1.   

    可以更改一下编程风格,将XHR更改成库,而不是作为每一个AJAX的应用.
    在xmlhttp.onreadystatechange = function IsHaveV(){}中,LZ可以考虑回调
      

  2.   

    Ajax 库
    var Ajax = function() {}; // implements Ajax 实现AjaxHandler
    var SuperHandler = Ajax= function() {}; // implements AjaxHandler 实现AjaxHandler
    SuperHandler.prototype = {
      request: function(method, url, callback, action, postVars) {
        var xhr = this.createXhrObject();
    var da=(new Date()).getTime();
    url=(url.indexOf("?")>=0)?(url+"&_data="+da):(url+"?_data="+da);
        xhr.onreadystatechange = function() {
          if(xhr.readyState == 4){
     (xhr.status == 200) ?  callback.success(xhr.responseText, xhr.responseXML) : callback.failure(xhr.status);  
      }else{ return; }
         
        };
        xhr.open(method, url, true);
    switch (action){//发送模式 0 简单提交 return string 
    case 0:{xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');break;}//发送模式 1 返回静态xml doc return xml 
    case 1:{xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=UTF-8');break;}//发送模式 1 获取静态doc return ?? 
    case 2:{xhr.setRequestHeader("Content-Type","text/xml"); break;}//发送模式 2 获取静态doc return  
    case 3:{break;}//发送模式 2 获取静态doc return ?? 
    default:{xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');break;}
    }
        if(method !== 'POST') postVars = '';
    postVars=(postVars==null)?"":postVars;
        xhr.send(postVars);
      },
      createXhrObject: function() { 
    if(window.XMLHttpRequest){var objXMLHttp = new XMLHttpRequest();}else{ 
    var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; 
    for(var n = 0;n < MSXML.length;n++){try{ var objXMLHttp = new ActiveXObject(MSXML[n]); break; }catch(e1){}} }
        // If we reach this point, none of the methods worked.
    if(objXMLHttp){

    return objXMLHttp;
    }else{
    throw new Error('SuperHandler: Could not create an XHR object.');
    }
        
      } 
    };对LZ的应用:
    function sendSession()//發送採購申請單編碼,并打開採購申請單
    {
        var st = "";
        alert(R.length);

        for(var i = 1; i < R.length-1;i++)
        {
            var item = R[i].getElementsByTagName("input");
            if(item[15] != null)
            {
    var call={success:function (responseText, responseXML){
    if (responseText == "YES" && R[i].getAttribute('state') == 'edit') 
                  {alert(responseText+"======"+R[i].getAttribute('state'));  }
                 else {if(item[15].value != ""){ st += item[15].value +"□"+item[16].value+"□"+item[6].value+"■"; }
                        }
    },
                failure:function(status){return;}};
                var pono = document.getElementById("ddlPoNo").value;
                var value = "SELECT * FROM STN_PODet WHERE PONO = '" + pono + "' AND SourceNo = '" + item[15].value + "' AND SourceSerialNo = " + item[16].value +"";
    var pf="POST";
    var pb="SQL="+value;
    var sa ="../../AjaxComplete.aspx";
    var ps=0;
    var exh=new SuperHandler();
    try{exh.request(pf, sa,call, ps, pb);
    exh=null;
    }catch(e){}
                a.request();
            }
        }
        
        alert(st);
        if(st != "")
        {
            lhgdialog.opendlg( '', '../stone/PUR/ConvertSubscribe.aspx?condition='+st, 650,640,true);
        }
        else
        {
            lhgdialog.opendlg( '', '../stone/PUR/ConvertSubscribe.aspx', 650,640,true);
        }
    }