zoukankan      html  css  js  c++  java
  • jquery $.ajax运行不正常我的调试

    今天用jquery  $.ajax 发送请求,发现老是不成功,在百度和google上搜索信息,发现大部分原因是由于ie6,ie7,ie8,firefox中关于创建xmlhttprequest对象的问题,还说是由于浏览器内置native xmlhttprequest支持原因造成,关于这个问题我们可以通过修改jquery的源代码来完成.

    jquery 1.3.2

    xhr:function(){
      return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); //源代码部分

    可以修改为

    return window.XMLHttpRequest? new XMLHttpRequest() : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

    当然网上还有一些别的建议,比如

     方法一:

    var xmlHttp;
    if(window.XMLHttpRequest){

    //针对Firefox, Mozillar, Opera, Safari, IE7, IE8
                xmlHttp=new XMLHttpRequest();
               if (xmlhttp.overrideMimeType)
                     xmlhttp.overrideMimeType("text/xml");
    }
    else if(window.ActiveXObject)
    {
    try{
    //Firefox, Opera 8.0+, Safari
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
    //Internet Explorer
    try{
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }catch(e){
    xmlHttp = false;
    }
    }
    }
    return xmlHttp;

    方法二:

    try{
            if( window.ActiveXObject ){
                for( var i = 5; i; i-- ){
                    try{
                        if( i == 2 ){
    xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" );   
                        }else{
    xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );   
                        }
    xmlhttp_request.setRequestHeader("Content-Type","text/xml");
    xmlhttp_request.setRequestHeader("Content-Type","gb2312");
    break;}
                    catch(e){                       
                        xmlhttp_request = false;
                    }
                }
            }else if( window.XMLHttpRequest ){
                xmlhttp_request = new XMLHttpRequest();
                if (xmlhttp_request.overrideMimeType) {
                    xmlhttp_request.overrideMimeType(''text/xml'');
                }
            }
        }catch(e){
            xmlhttp_request = false;
        }

    总而言之,一定要根据浏览器的对应方式来创建:

    常见的浏览器判断方式是

    if (window.XMLHttpRequest) { //Mozilla, Safari,IE7,IE8
        alert('Mozilla, Safari,IE7,IE8 ');
        if(!window.ActiveXObject){ // Mozilla, Safari,
           alert('Mozilla, Safari');
        } else {
           alert('IE7,IE8');
        }
    } else {
        alert('IE6');
    }

    我们一定要了解这样写的原因,总而言之就是一定要根据浏览器方式来创建xmlhttprequest对象。

    第二个问题:直接在vs2008环境中调试ie8,ie7 $.ajax总是报错,将整个网站部署到iis中,$.ajax运行正常,如果大家实在无法解决这个问题,可以进行部署尝试。

  • 相关阅读:
    2019 Multi-University Training Contest 1
    2019江西省省赛
    2019牛客暑期多校训练营 第二场
    母函数
    树形DP
    蓝桥杯-标题:打印图形
    蓝桥杯-标题:史丰收速算
    蓝桥杯-标题:切面条
    蓝桥杯-标题:李白打酒
    蓝桥杯-标题:啤酒和饮料
  • 原文地址:https://www.cnblogs.com/laogao/p/1795957.html
Copyright © 2011-2022 走看看