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运行正常,如果大家实在无法解决这个问题,可以进行部署尝试。

  • 相关阅读:
    C#操作SQLite 报错 (Attempt to write a readonly database)
    JS判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
    JueryUI插件的简单应用(一):介绍及第一个示例
    在VS2008(Winform)中使用WebService
    Oracle触发器使用
    C# 创建Windows服务。服务功能:定时操作数据库
    aspnet前后台条件下根目录的读取
    xshell实现端口转发
    (转)使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果
    D3D坐标系统和几何DirectX Griaphic学习
  • 原文地址:https://www.cnblogs.com/laogao/p/1795957.html
Copyright © 2011-2022 走看看