Einzelnen Beitrag anzeigen
Alt 08.07.2008, 21:41   #5 (permalink)
BenniG.
Overclocker
 

Registriert seit: 24.05.2002
Beiträge: 200

BenniG. wird schon bald berühmt werdenBenniG. wird schon bald berühmt werden

Standard AW: Problem bei einem request unter Javascript

Möglichkeit 1 mit Flag:
Code:
<script language="javascript" type="text/javascript">

var id_name;
var http_request;
var request_status
var request_content_v;
var response_present=false;

function request (url,id) {
        
        id_name = id;
        http_request = false;
        request_content_v = "";
        request_status = false;

        document.getElementById(id_name).value = "load...";
        
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // zu dieser Zeile siehe weiter unten
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            //alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
            return false;
        }
                
        http_request.onreadystatechange = request_content;
         
        http_request.open('GET', url, true);
        http_request.send(null);
        response_present=false;
        while(!response_present) {
            //do nothing but wait
            if (response_present) {
                break;
            }
        }
                
        document.getElementById(id_name).value = request_content_v;
        
        return request_status;
        
    }
    

    function request_content () {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                request_content_v = http_request.responseText
                request_status = true;
            } else {
                alert('Bei dem Request ist ein Problem aufgetreten.');
                request_status = false;
            }
            response_present = true;
        }
          
    }

</script>
Besser: Verarbeitung im CallBack
Code:
    <script language="javascript" type="text/javascript">

    var id_name;
    var http_request;
    var request_status
    var request_content_v;
    var response_present=false;

    function request (url,id) {
            
            id_name = id;
            http_request = false;
            request_content_v = "";
            request_status = false;

            document.getElementById(id_name).value = "load...";
            
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
                    http_request.overrideMimeType('text/xml');
                    // zu dieser Zeile siehe weiter unten
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }

            if (!http_request) {
                //alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
                return false;
            }
                    
            http_request.onreadystatechange = request_content;
             
            http_request.open('GET', url, true);
            http_request.send(null);
            response_present=false;
                            
            //das hier wird auch nicht funktionieren, ist die Frage, ob das überhaupt gebraucht wird?!
            //Kann wohl auch über request_content abgehandelt werden
            return request_status;
            
        }
        

        function request_content () {

            if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                    request_content_v = http_request.responseText
                    request_status = true;
                    document.getElementById(id_name).value = request_content_v;
                } else {
                    alert('Bei dem Request ist ein Problem aufgetreten.');
                    request_status = false;
                }
                
            }
              
        }

    </script>
Beides selbstverständlich ungetestet

Und könnte mal jemand diese ellenlange URL kürzen? Sprenung der Seitenbreite müsste mit Peitschenhieben bestraft werden

Geändert von BenniG. (08.07.2008 um 22:09 Uhr)
BenniG. ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
mokus (09.07.2008)