呵呵 SF IE搞的是自己的那套 希望在IE8+以后分歧越来越少

解决方案 »

  1.   

    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");这个语句在FF下就不行吧,在IE下也分版本建议参考Ajax的js文件
      

  2.   

    function newXMLHttpRequest() {
     var xmlreq = null;
     if (window.XMLHttpRequest) {
      // 非Microsoft browsers的情况
      xmlreq = new XMLHttpRequest();
     } else if (window.ActiveXObject) {
      // Microsoft browsers的情况
      try {
       xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e1) {
       try {
        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (e2) {
        xmlreq = null;
       }
      }
     }
     if (xmlreq == null) {
       alert("XMLHTTPRequest生成失败了!!O(∩_∩)O哈哈~");
     }
     return xmlreq;
    }
      

  3.   

    RE:APOLLO_TS
    ----------------------
    问题是IE和FireFox中的
    xmlhttp.open("POST","TeamCustomerAjaxPrice.aspx?cth=" + cth + "&iRow="+ iRow,true);
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlhttp.send(null);
    xmlhttp.onreadystatechange=function() 
    {                    
        if ( xmlhttp.readyState==4 || xmlhttp.readyState=='complete' )
        {
            if("" != xmlhttp.responseText)
            {
                       obj.innerHTML=xmlhttp.responseText;
            }
        }
    }    
    这些语法是否相同?
      

  4.   

    var xmlhttp = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest()
      

  5.   

    onreadystatechange 
    readstate
    基本不兼容FF
    目前最新版的FF不清楚--一直没有用FF
    用jquery可以很好的解决你的问题!
      

  6.   

    function CustomerAjaxPrice()
    {
     $.ajax({
      type: 'POST',//URL方式为POST
      url: 'CustomerAjaxPrice.aspx',//这里是指向登录验证的页面
      data:'cth ='+'cth'+'& iRow ='+iRow,//把要验证的参数传过去
      dataType:'XML',//数据类型为XML格式的验证
      //在发送数据之前要运行的函数
      beforeSend:function(){
        自己写吧!
      },
      success:function(xml)
              {        }
      });
    }
      

  7.   


    //Create xmlHttp project
    function CreateXmlHttp()
    {
    try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch (e) { try { xmlHttp = new XMLHttpRequest(); }
    catch (e) { xmlHttp = false; }}}
    }
    //readyState,status,在FF中有大小写区别
    if (xmlHttp.readyState == 4){
    if(xmlHttp.status==200)
    {
    }
    }
      

  8.   

    写成个方法,方便调用function GetXmlHttpObject()
    {
      var xmlHttp=null;
      try
        {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
        }
      catch (e)
        {
        // Internet Explorer
        try
          {
          xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
        catch (e)
          {
          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        }
      return xmlHttp;
    }
      

  9.   

    用框架或下面这个,各浏览器均支持,而且可以满足同时多个XMLHTTP请求的需要。
    var XMLHttp = {
    _objPool: [], _getInstance: function (){
    for (var i = 0; i < this._objPool.length; i ++){
    if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4){
    return this._objPool[i];
    }
    }
    // IE5中不支持push方法
    this._objPool[this._objPool.length] = this._createObj();
    return this._objPool[this._objPool.length - 1];
    }, _createObj: function (){
    if (window.XMLHttpRequest){
    var objXMLHttp = new XMLHttpRequest();
    }else{
    var MSXML = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
    for(var n=0; n<MSXML.length; n++){
    try{
    var objXMLHttp = new ActiveXObject(MSXML[n]);
    break;
    }catch(e){}
    }
    }          
    // mozilla某些版本没有readyState属性
    if (objXMLHttp.readyState == null){
    objXMLHttp.readyState = 0;
    objXMLHttp.addEventListener("load", function (){
    objXMLHttp.readyState = 4;
    if(typeof objXMLHttp.onreadystatechange == "function"){objXMLHttp.onreadystatechange();}
    },  false);
    }
    return objXMLHttp;
    }, // 发送请求(方法[post,get], 地址, 数据, 回调函数)
    sendReq: function (method, url, data, callback){
    var objXMLHttp = this._getInstance();
    var mode = arguments.length > 4 ? arguments[4] : true;
    with(objXMLHttp){
    try{
    // 加随机数防止缓存
    if (url.indexOf("?") > 0){url += "&randnum=" + Math.random();}
    else{url += "?randnum=" + Math.random();}
    open(method, url, mode);
    // 设定请求编码方式
    setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    send(data);
    if(mode){ //异步则判断readyState状态
    onreadystatechange = function (){
    if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)){
    callback(objXMLHttp);
    }
    }
    }else{ //同步则直接回调
    if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)){
    callback(objXMLHttp);
    }
    }
    }catch(e){alert(e);}
    }
    }
    }
      

  10.   

    调用的时候只需要
    function doPageLoad(){
    if(arguments.length == 0){
    var url = "../../app/trade/InitPage.asp";
    XMLHttp.sendReq("POST", url, "", doPageLoad);
    }else{
    var xml = arguments[0].responseXML;
    //以下略
    }
      

  11.   

    在new 一个xmlHttp的对象时候 IE与Firefox 是不同的。可以写成一个方法
    function createXmlHttp(){
      var Try={
    these: function(){
    var returnValue;
    for (var i=0; i<arguments.length; i++){
    var lambda=arguments[i]; try { returnValue=lambda(); break; } catch(e){}
    } return returnValue; } }
      var xmlHttp=Try.these(
    function() { return new ActiveXObject('Msxml2.XMLHTTP')},
    function() { return new ActiveXObject('Microsoft.XMLHTTP')},
    function() { return new XMLHttpRequest()}
    ) || false;
    return xmlHttp;
    }
    需要的时候调用createXmlHttp()就行了xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4){
    if (xmlhttp.status==200){
     ......
    }
    }
    }
    ff3 ie7 ie6测试过,基本通用