Visualizzazione dei risultati da 1 a 10 su 10

Discussione: funzione AJAX per IE7

  1. #1
    Utente di HTML.it L'avatar di miki.
    Registrato dal
    Oct 2004
    Messaggi
    1,918

    funzione AJAX per IE7

    io ho questa funzione per la chiamata XMLHttpRequest
    Codice PHP:
    function CreateXmlHttpReq(handler) {
      var 
    xmlhttp null;
     if (
    window.XMLHttpRequest){     
        var 
    xmlhttp = new XMLHttpRequest()
        
    xmlhttp.onload handler;
        
    xmlhttp.onerror handler;
      } else {
          if (
    window.ActiveXObject){
                var 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
            
    xmlhttp.onreadystatechange handler;
          }
      }
      return 
    xmlhttp;

    il problema è che funziona benissimo con firefox e IE6 ma con IE7 non funziona, e non capisco il motivo.
    You cannot discover new oceans unless you have the courage to lose sight of the shore

    Caro Dio, quando nelle preghiere ti chiedevo di far morire quel pedofilo truccato, liftato,mentalmente disturbato e di colore indefinibile, non intendevo Michael Jackson.

  2. #2
    Utente di HTML.it L'avatar di miki.
    Registrato dal
    Oct 2004
    Messaggi
    1,918
    up
    You cannot discover new oceans unless you have the courage to lose sight of the shore

    Caro Dio, quando nelle preghiere ti chiedevo di far morire quel pedofilo truccato, liftato,mentalmente disturbato e di colore indefinibile, non intendevo Michael Jackson.

  3. #3
    Una breve ricerca con SanGoogle mi ha portato QUI , dove, tra le altre cose, è riportato questo esempio di codice:
    Codice PHP:
    if (window.XMLHttpRequest){

              
    // If IE7, Mozilla, Safari, etc: Use native object
              
    var xmlHttp = new XMLHttpRequest()

    }
    else
    {
    if (
    window.ActiveXObject){

              
    // ...otherwise, use the ActiveX control for IE5.x and IE6
              
    var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
              }


    L'articolo, però dice anche:

    Note that an organization may use Group Policy or IE Options to disable the new native XMLHTTP object if desired.

    Parrebbe quindi che l'XMLHTTP object possa essere disabilitato sia da una Group Policy che direttamente dall'Utente nelle opzioni di IE
    L'articolo, però, dice anche:

    Note that IE7 will still support the legacy ActiveX implementation of XMLHTTP alongside the new native object, so pages currently using the ActiveX control will not require rewrites.

    ... Alle prove l'ardua sentenza!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  4. #4
    Utente di HTML.it L'avatar di miki.
    Registrato dal
    Oct 2004
    Messaggi
    1,918
    Originariamente inviato da homezappa
    Una breve ricerca con SanGoogle mi ha portato QUI , dove, tra le altre cose, è riportato questo esempio di codice:
    Codice PHP:
    if (window.XMLHttpRequest){

              
    // If IE7, Mozilla, Safari, etc: Use native object
              
    var xmlHttp = new XMLHttpRequest()

    }
    else
    {
    if (
    window.ActiveXObject){

              
    // ...otherwise, use the ActiveX control for IE5.x and IE6
              
    var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
              }


    L'articolo, però dice anche:

    Note that an organization may use Group Policy or IE Options to disable the new native XMLHTTP object if desired.

    Parrebbe quindi che l'XMLHTTP object possa essere disabilitato sia da una Group Policy che direttamente dall'Utente nelle opzioni di IE
    L'articolo, però, dice anche:

    Note that IE7 will still support the legacy ActiveX implementation of XMLHTTP alongside the new native object, so pages currently using the ActiveX control will not require rewrites.

    ... Alle prove l'ardua sentenza!

    HTH
    Zappa
    grazie.
    Onestamente ho fatto le prove su IE7 standalone quindi probabile che sia quello, visto che da documentazione pare che dovrebbe funzionare se i permessi lo consentono.
    Aspetterò la versione ufficiale, e se non va nemmeno con quella boh.

    provando anche questo codice
    Codice PHP:
    if (window.XMLHttpRequest){
              
    alert('XMLHttpRequest');

    }
    else
    {
    if (
    window.ActiveXObject){
              
    alert('activeX');
              }


    non compare nessun alert quando richiamo la funzione.
    You cannot discover new oceans unless you have the courage to lose sight of the shore

    Caro Dio, quando nelle preghiere ti chiedevo di far morire quel pedofilo truccato, liftato,mentalmente disturbato e di colore indefinibile, non intendevo Michael Jackson.

  5. #5
    Onestamente ho fatto le prove su IE7 standalone quindi probabile che sia quello, visto che da documentazione pare che dovrebbe funzionare se i permessi lo consentono.
    Già .. i permessi ...
    Sicuro che nel tuo IE7 tu abbia gli ActiveX abilitati o l'XMLHTTP abilitato?
    Un test simpatico sarebbe: se hai un account GMail, guarda la tua posta! (è in AJAX spinto, l'interfaccia web di GMail!)
    ciao
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  6. #6
    Utente di HTML.it L'avatar di miki.
    Registrato dal
    Oct 2004
    Messaggi
    1,918
    Originariamente inviato da homezappa
    Già .. i permessi ...
    Sicuro che nel tuo IE7 tu abbia gli ActiveX abilitati o l'XMLHTTP abilitato?
    Un test simpatico sarebbe: se hai un account GMail, guarda la tua posta! (è in AJAX spinto, l'interfaccia web di GMail!)
    ciao
    Zappa
    Risolto, onestamente non so perchè, forse avevo fatto qualche errore quando facevo le prove dell'alert, perchè il codice come ho scritto sul forum funziona.
    Spiego l'errore tante volte potesse servire a qualcuno
    Non mi funzionava la funzione ajax perchè per richiamare la funzione dopo il send del XMLHttpRequest nel caso dell'activeX lo facevo utilizzando onreadystatechange e nel caso dell'oggetto XMLHttpRequest utilizzavo onload e onerror che però con IE7 non funziona e bisogna aggiungere onreadystatechange.

    Quindi ricapitolando
    Codice PHP:
    var pos;
    function 
    chiamata_ajax(url){
      if (
    window.XMLHttpRequest) {
              
    pos = new XMLHttpRequest();
              
    pos.onreadystatechange processPosChange// per IE7
              
    pos.onload processPosChange;
           
    pos.onerror processPosChange;
              
    pos.open("GET"urlfalse);
          
    pos.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
              
    pos.send();
        
    // branch for IE/Windows ActiveX version
        
    } else if (window.ActiveXObject) {
            
    pos = new ActiveXObject("Microsoft.XMLHTTP");
            if (
    pos) {
            
    pos.onreadystatechange processPosChange;
            
    pos.open("GET"urlfalse);
        
    pos.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
            
    pos.send();
            }
        }

    processPosChange è la funzione che richiama una volta che ha ricevuto i dati dal server.

    La libreria che usavo l'avevo copiata da un sito e quindi non sapevo dove mettere le mani, ecco perchè m'ero incartato. anche perchè di js non è che sia così esperto.
    You cannot discover new oceans unless you have the courage to lose sight of the shore

    Caro Dio, quando nelle preghiere ti chiedevo di far morire quel pedofilo truccato, liftato,mentalmente disturbato e di colore indefinibile, non intendevo Michael Jackson.

  7. #7
    Non ho capito perchè usi onload se puoi usare direttamente onreadystatechange, che è universale; almeno da quanto riportato sull'articolo "ajax guida base" di questo sito (l'hai letto?).

  8. #8
    Utente di HTML.it L'avatar di miki.
    Registrato dal
    Oct 2004
    Messaggi
    1,918
    Originariamente inviato da menphisx
    Non ho capito perchè usi onload se puoi usare direttamente onreadystatechange, che è universale; almeno da quanto riportato sull'articolo "ajax guida base" di questo sito (l'hai letto?).
    onestamente non ho letto la guida, ma con onreadystatechange non funziona su Firefox.
    Praticamente se vedi il codice che ho scritto nel post precedente e togli le righe con onload e onerror con Firefox fa la chiamata ajax però poi si blocca, praticamente non si rende conto che è cambiato lo state
    You cannot discover new oceans unless you have the courage to lose sight of the shore

    Caro Dio, quando nelle preghiere ti chiedevo di far morire quel pedofilo truccato, liftato,mentalmente disturbato e di colore indefinibile, non intendevo Michael Jackson.

  9. #9
    Onreadystatechange nn funziona con Firefox? Questa è buona
    Devi aver sbagliato qualcosa, a forza...

  10. #10
    Utente di HTML.it L'avatar di miki.
    Registrato dal
    Oct 2004
    Messaggi
    1,918
    Originariamente inviato da Mega69
    Onreadystatechange nn funziona con Firefox? Questa è buona
    Devi aver sbagliato qualcosa, a forza...
    può essere, questo è il codice

    Codice PHP:
    function prova(url) {
        
    // branch for native XMLHttpRequest object
        
    if (window.XMLHttpRequest) {
            
    pos = new XMLHttpRequest();
            
    pos.onreadystatechange processPosChange;
            
    //pos.onload = processPosChange;
            //pos.onerror = processPosChange;
            
    pos.open("GET"urlfalse);
            
    pos.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
            
    pos.send();
        
    // branch for IE/Windows ActiveX version
        
    } else if (window.ActiveXObject) {
            
    pos = new ActiveXObject("Microsoft.XMLHTTP");
            if (
    pos) {
                
    pos.onreadystatechange processPosChange;
                
    pos.open("GET"urlfalse);
                
    pos.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
                
    pos.send();
            }
        }

    se decomento le linee pos.onload e pos.onerror va, altrimenti non va.
    Se mi dici dove sbaglio mi fai un favore.
    You cannot discover new oceans unless you have the courage to lose sight of the shore

    Caro Dio, quando nelle preghiere ti chiedevo di far morire quel pedofilo truccato, liftato,mentalmente disturbato e di colore indefinibile, non intendevo Michael Jackson.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.