Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [AJAX] XMLHttpRequest.open automatico

    Ciao ragazzi, sapete dirmi perché questo codice non funziona?
    In pratica vorrei creare una funzione che imposti rapidamente il tipo di scambio dati con il server (post o get), imposti gli header corretti ed avvii una funzione da me scelta quando i dati del server sono stati inviati completamente (readyState=4).

    Questo è il
    codice:
    /*ajax=oggetto XMLHttpRequest
    method=get oppure post
    action=file lato server che gestisce la richiesta
    f=nome della funzione da richiamare quando readyState=4*/
    function ajaxOpen(ajax,method,action,f) {
        if (ajax) {
            if (method=="get") {
                ajax.open("get", action, true);
                ajax.setRequestHeader("connection", "close");
            } else {
                ajax.open("post", action, true);
                ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            }
            
            // impostazione controllo e stato della richiesta
            ajax.onreadystatechange = function() {
                // verifica dello stato
                if(ajax.readyState === 4) {
                    // verifica della risposta da parte del server
                    if(ajax.status === ajaxStatusOk) {
                        eval(f+"(\""+ajax.responseText+"\");");
                        return 0; //tutto ok
                    } else return ajax.status; //errori ajax
                } 
            }
        } else return -1;
    }
    L'oggetto ajax passato come parametro è stato inizializzato correttamente con questo
    codice:
    var ajax= null;
        browserUtente = navigator.userAgent.toUpperCase();
        if (typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object") ajax= new XMLHttpRequest();
        else if (window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
            if(browserUtente.indexOf("MSIE 5") < 0) ajax= new ActiveXObject("Msxml2.XMLHTTP");
            else ajax= new ActiveXObject("Microsoft.XMLHTTP");
        }
        
        return ajax;
    Firefox mi dice che la funzione ajaxOpen non è definita, quindi ci deve essere un errore interno alla funzione, ma non mi viene intercettato.

  2. #2
    ho risolto, ora mi sento buono e voglio contribuire con questo mio codice
    Se vi interessa come vi dicevo serve per evitare di riscrivere ogni volta varie righe di codice per inviare una chiamata al server ajax. Si può mettere tutto in file esterno JS così si risparmia anche banda.

    codice:
    /*PARAMETRI:
    * ajax=oggetto ajax
    * method=get o post
    * action=file sul server che interpreta la richiesta
    * f=funzione da richiamare quando ajax.status=4
    */
    function ajaxOpen(ajax,method,action, f) {
        if (ajax) {
            if (method=="get") {
                ajax.open("get", action, true);
                ajax.setRequestHeader("connection", "close");
            } else {
                ajax.open("post", action, true);
                ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            }
            
            ajax.onreadystatechange = function() {
                if(ajax.readyState === 4) {
                    if(ajax.status === ajaxStatusOk) {
                        eval(f + "(\"" + ajax.responseText + "\");");
                    } else {
                        // errore di caricamento
                        alert("Errore AJAX n°" + ajax.status);
                        return ajax.status;
                    }
                } 
            }
        }
    }

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.