1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Опять про AJAX (проблема в поддержке старых браузеров)

Тема в разделе "Web Coding", создана пользователем lexesv, 28 дек 2006.

Статус темы:
Закрыта.
Модераторы: latteo
  1. lexesv

    lexesv

    Регистр.:
    15 ноя 2006
    Сообщения:
    219
    Симпатии:
    103
    Вот пример кода (прошу прощения за большой объём)

    Он поддерживается такими браузерами как IE7, Opera 9, Mozilla Firefox 1.5

    Я не специалист в JS, в основном программирую на PHP,
    но вот столкнулся с необходимостью применить XMLhttpRequest в веб приложении.

    Так вот, возможно ли как нибудь поправить данный код, что бы он работал в других браузерах, например IE6


    HTML:
    
     //Copyright (c) 2006 Ismail Ata KURT (http://blog.livaxmedia.com)
    
     function ajaxGet(file,obj){
      var xmlObj = null;
      if(window.XMLHttpRequest){
          xmlObj = new XMLHttpRequest();
      } else if(window.ActiveXObject){
          try {
                xmlObj = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                try {
                   xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                    return;
                }
             }
      } else {
          return;
      }
    
    xmlObj.onreadystatechange = function(){
        if(xmlObj.readyState == 4){
           var result = xmlObj.responseText
    
           updateObj(obj, result);
         }
        }
    
        document.getElementById(obj).innerHTML="<img src=\"yukleniyor.gif\">";
        xmlObj.open ('GET', file, true);
        xmlObj.send ('');
      }
    
     function ajaxSend(file,obj,form_name,param) {
        var xmlObj    =    null;
        //var param   =   null;
        var stmp    =   null;
        var i       =   0;
        var s       =   0;
    
        //alert(document.getElementById(form_name).length);
        form = document.getElementById(form_name);
    
        for(i=0;i<=form.length-1;i++) {
            //alert(form.elements[i].name+"/"+form.elements[i].type);
            switch (form.elements[i].type) {
                case "text":
                    if(param!=null) {
                        param+=("&"+form.elements[i].name+"="+encodeURI(form.elements[i].value));
                    } else {
                        param=(form.elements[i].name+"="+encodeURI(form.elements[i].value));
                    }
                    break;
                case "password":
                    if(param!=null) {
                        param+=("&"+form.elements[i].name+"="+encodeURI(form.elements[i].value));
                    } else {
                        param=(form.elements[i].name+"="+encodeURI(form.elements[i].value));
                    }
                    break;
                case "hidden":
                    if(param!=null) {
                        param+=("&"+form.elements[i].name+"="+encodeURI(form.elements[i].value));
                    } else {
                        param=(form.elements[i].name+"="+encodeURI(form.elements[i].value));
                    }
                    break;
                case "radio":
                    //alert(form.elements[i].name.length);
    
                    if(param!=null) {
                        if(form.elements[i].checked==true) {
                        param+=("&"+form.elements[i].name+"="+encodeURI(form.elements[i].value));}
                    } else {
                        if(form.elements[i].checked==true) {
                        param=(form.elements[i].name+"="+encodeURI(form.elements[i].value));}
                    }
                    break;
                case "select-one":
    
                     if(param!=null) {
    
                        param+=("&"+form.elements[i].name+"="+encodeURI(form.elements[i].options[form.elements[i].selectedIndex].value));
                    } else {
    
                        param=(form.elements[i].name+"="+encodeURI(form.elements[i].options[form.elements[i].selectedIndex].value));
                    }
                    break;
                case "checkbox":
    
    
                     if(param!=null) {
    
                        param+=("&"+form.elements[i].name+"="+encodeURI(form.elements[i].checked));
                    } else {
    
                        param=(form.elements[i].name+"="+encodeURI(form.elements[i].checked));
                    }
                    break;
                case "select-multiple":
                    //alert(form.elements[i].length);
                    for(s=0;s<form.elements[i].length;s++) {
    
                            if(form.elements[i].options[s].selected==true) {
                                if(stmp==null) {
                                    stmp=form.elements[i].options[s].value;} else {
                                    stmp+="|"+form.elements[i].options[s].value
                                    }
                            }
    
                    }
                    if(stmp==null) { stmp=-1;}
                    if(param!=null) {
    
                        param+=("&"+form.elements[i].name+"="+encodeURI(stmp));
                    } else {
    
                        param=(form.elements[i].name+"="+encodeURI(stmp));
                    }
                    break;
                case "textarea":
                    if(param!=null) {
                        param+=("&"+form.elements[i].name+"="+encodeURI(form.elements[i].value));
                    } else {
                        param=(form.elements[i].name+"="+encodeURI(form.elements[i].value));
                    }
                    break;
    
            }
        }
    
          
    
      if(window.XMLHttpRequest){
          xmlObj = new XMLHttpRequest();
          if (xmlObj.overrideMimeType) {
                 xmlObj.overrideMimeType('text/html');
             }
      } else if(window.ActiveXObject){
           try {
                xmlObj = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                try {
                   xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                    return;
                }
             }
      } else {
          return;
      }
        xmlObj.onreadystatechange = function(){
        if(xmlObj.readyState == 4){
          if(xmlObj.status    == 200) {
            var result = xmlObj.responseText
    
           updateObj(obj, result);
        }
         }
        }
    
      document.getElementById(obj).innerHTML="<img src=\"yukleniyor.gif\">";
    
      xmlObj.open('POST', file, true);
      xmlObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlObj.setRequestHeader("Content-length", param.length);
      xmlObj.setRequestHeader("Connection", "close");
      xmlObj.send(param);
    
    
    }
      function updateObj(obj, data){
          //alert(data);
          document.getElementById(obj).innerHTML=data;
      }
    
    
     
  2. Nemesis

    Nemesis Прохожие

    Гораздо проще найти кроссбраузерную библиотеку, которая одинаково хорошо работает и в старых браузерах.
     
  3. anarki

    anarki Прохожие

    Перейти по ссылке
     
  4. endorfine

    endorfine Создатель

    Регистр.:
    23 мар 2007
    Сообщения:
    29
    Симпатии:
    1
    А что происходит в ИЕ6? какая ошибка?
     
  5. tov_Me

    tov_Me Постоялец

    Регистр.:
    7 апр 2007
    Сообщения:
    93
    Симпатии:
    6
    http://www.google.com/codesearch?hl=ru&q=file:\.js$+XMLHttpRequest&ct=hp

    Думаю, этого хватит :)
     
  6. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    имхо единственная нормальная ajax библиотека, это котеровская JsHttpRequest (ссылка в третьем посте)..
     
  7. ArtInt

    ArtInt Постоялец

    Регистр.:
    3 июн 2007
    Сообщения:
    88
    Симпатии:
    35
    +1 за кроссбраузерную библиотеку с ней будет намного меньше гимора
     
Статус темы:
Закрыта.