TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen

Antwort
 
LinkBack Themen-Optionen Thema bewerten Ansicht
Alt 07.07.2008, 18:44   #1 (permalink)
Overclocker
 
Benutzerbild von mokus
 
Registriert seit: 07.01.2005
Ort: Göttingen
Beiträge: 379

mokus ist zur Zeit noch ein unbeschriebenes Blatt

Standard Problem bei einem request unter Javascript

Hi,
ich habe ein Problem mit einer request Abfrage, in dieser rufe ich eine Datei mit einem bestimmten String aus den ich verarbeiten möchte. Nur jetzt habe ich das Problem das in der Funktion drin ein Syntax Fehler laut Firefox auftritt.

Beispiel:
Code:
Fehler: Syntax-Fehler
Quelldatei: http://www.lammpee.de/toolbar_inc/ar...p?archive=news
Zeile: 1, Spalte: 1
Quelltext:
Design Update Start*,*http://www.lammpee.de/archive,news,entry,4,1.html*;*...
Komischer weise funktioniert die ausgabe aber, wenn ich mitten in die Funktion die Variable mit dem enthaltenen String über ein Alert ausgeben lasse. Ab da an gibt es dann keine probleme mehr.

Funktion:
HTML-Code:
<script language="javascript" type="text/javascript">

var id_name;
var http_request;
var request_status
var request_content_v;

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);
                
        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;
            }
        }
          
    }

</script>
Wenn ich in dieser Funktion am Ende ein Alert reinbringe funktioniert es.
HTML-Code:
        http_request.onreadystatechange = request_content;
         
        http_request.open('GET', url, true);
        http_request.send(null);
        
        alert(request_content_v);
        
        document.getElementById(id_name).value = request_content_v;
        
        return request_status;
        
    }

Geändert von mokus (08.07.2008 um 23:42 Uhr)
mokus ist offline   Mit Zitat antworten
Alt 07.07.2008, 21:37   #2 (permalink)
semi-diabolisch
 
Benutzerbild von [EID]-Mr.GiZMO
 
Registriert seit: 12.09.2005
Ort: Zwickau
Beiträge: 2.883

[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein

Standard AW: Problem bei einem request unter Javascript

Ich behaupte mal ganz frech, das liegt an der Verzögerung, die durch das Alert ausgelöst wird.

Ich würde versuchen dem Script an der stelle eine "Verschnaufpause" zu gönnen, bis id_name ausgegeben übergeben wird.

Evtl. mit setTimeout oder einer Pseudo-warte-auf-etwas-oder-rechne-etwas-Funktion.
War mein Post nützlich für dich? Ein Danke oder eine Bewertung sind immer schön.
Teilnehmer der Initiative "User verbessern Qualität im Forum" | Meine Systeme

Darf ich mal bitte vorbei?! Das geht nach Kompetenz... Danke! | | | Einmal dachte ich, ich hätte Unrecht. Hab mich aber getäuscht!
"Es ist gelogen, dass Videogames Kids beeinflussen. Hätte Pacman das getan, würden wir heute durch dunkle Räume irren, Pillen fressen und elektronische Musik hören."

[EID]-Mr.GiZMO ist offline   Mit Zitat antworten
Alt 08.07.2008, 09:43   #3 (permalink)
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

Überleg mal wofür AJAX steht. (Tipp: Gleich das erste Wort birgt das Problem).

Du kannst nicht synchron arbeiten, wenn du ein Request in den Hintergrund abschickst.

Du musst deine Verarbeitung der Antwort im sog. CallBack (das wird aufgerufen, wenn die Response vom Webserver geschickt wurde) durchführen.

Das CallBack ist in deinem Fall die Funktion "request_content".

Das bedeutet das Asynchronous im AJAX.
Mit einer Wartezeit würde ich in keinem Fall arbeiten. Wenn dann mit einem Flag, das gesetzt wird, sobald die Response da ist (falls du wirklich den Eindruck von synchroner Verarbeitung erwecken musst).
BenniG. ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
[EID]-Mr.GiZMO (08.07.2008)
Alt 08.07.2008, 10:12   #4 (permalink)
semi-diabolisch
 
Benutzerbild von [EID]-Mr.GiZMO
 
Registriert seit: 12.09.2005
Ort: Zwickau
Beiträge: 2.883

[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein

Standard AW: Problem bei einem request unter Javascript

BenniG., wie würde man das in diesem speziellen Fall scripten?
[EID]-Mr.GiZMO ist offline   Mit Zitat antworten
Alt 08.07.2008, 21:41   #5 (permalink)
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)
Antwort

Stichworte
javascript, problem, request


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir erlaubt, neue Themen zu verfassen.
Es ist dir erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
javascript lotto problem Stefan Programmiersprachen 17 18.12.2009 19:26
Problem bei Installation von einem DVD-RW unter Win Me MaxZorin Windows & Programme 1 13.05.2007 11:57
Win XP x64 - ist das aktivieren ein Problem bei einem wiederverkauf? Jenlain Windows & Programme 2 03.11.2005 20:36
Javascript Button Problem mokus Programmiersprachen 5 26.10.2005 21:44
Problem wegen Partition bei Xp Installation unter ME Gast Windows & Programme 5 09.01.2003 21:17


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 Uhr.




Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum - Hardware-Links - Partner
Copyright © 1999-2013 TweakPC, Alle Rechte vorbehalten, all rights reserved