Forum: Mikrocontroller und Digitale Elektronik AVR-NetIO: JavaScript Problem.


von Jürgen (Gast)


Lesenswert?

Hallo,

der Aufruf des unten stehenden JavaScript-Programms führt zu dieser 
Fehlermeldung im FireFox:

-------------------------------------------------------------------
Zeitstempel: 04.08.2012 18:44:13
Fehler: uncaught exception: [Exception... "Access to restricted URI 
denied"  code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" 
location: "file:///C:/GettTmp2.html Line: 27"]
-------------------------------------------------------------------

Das Script habe ich von der Wikipedia 
(http://de.wikipedia.org/wiki/XMLHttpRequest) kopiert.

Die Zeile 27 aus der Fehlermeldung ist mit einem '*' markiert.

Was muss ich ändern, um die Daten vom AVR-NetIO zu bekommen.

mfg

Jürgen


<SCRIPT type="text/javascript">

var xmlHttp = null;
try {
    // Mozilla, Opera, Safari sowie Internet Explorer (ab v7)
    xmlHttp = new XMLHttpRequest();
} catch(e) {
    try {
        // MS Internet Explorer (ab v6)
        xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
        try {
            // MS Internet Explorer (ab v5)
            xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            xmlHttp  = null;
        }
    }
}
if (xmlHttp) {
    xmlHttp.open('GET', '192.168.0.90/temp.csv', true);
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4) {
            alert(xmlHttp.responseText);
        }
    };
*   xmlHttp.send(null);
}

</script>

von Jürgen (Gast)


Lesenswert?

Hallo,

einen kleinen Schritt bin ich weitergekommen.

Wird die Anweisung "xmlHttp.send(null);" in "xmlHttp.send();" geändert, 
dann geht die Anforderung (siehe unten) zum AVR-NetIO. Leider kommen 
keine Daten zurück.

mfg

Jürgen


**** NEUE HTTP ANFORDERUNG ****

GET /temp.csv HTTP/1.1
Host: 192.168.0.90
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 
Firefox/13.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Origin: null
DNT: 1
Connection: keep-alive

<---HEADER ENDE ERREICHT!--->

von Daniel F. (df311)


Lesenswert?

steht doch in der fehlermeldung: firefox lässt den ajax-call nicht zu, 
weil der auf eine andere domain zeigt (du öffnest die datei lokal und 
versuchst per ajax daten zu laden) -> cross-site-scripting...

mögliche lösungen:
1. einen uralten ie verwenden, der zwar schon ajax unterstützt aber 
gegen cross-domain-probleme nicht sicher ist
2. ein (php)-script dazwischen schalten, das den cross-domain-aufruf 
kapselt
3. es gibt sicher noch mehr lösungen, aber ich will im moment nicht mehr 
besonders viel denken ;-)

p.s.
ein ajax-aufruf kommt selten allein - warum verwendest du keine 
brauchbare bibliothek, die den ganzen browserabhägngigen kram kapselt?
(z.b. mit jquery kannst du je nach formatierung den ganzen 
javascript-block auf ca. 10 zeilen reduzieren - ändert aber nichts an 
deinem problem...)

von Stefan F. (sfrings)


Lesenswert?

Ajax funktioniert seit einiger Zeit nicht mehr mit Lokalen Dateien.

Du must die Seite auf einem Webserver hochladen und den AJAX Call an den 
gleichen Webserver richten, wo auch die Seite her kan, die das 
Javascript enthält. Ist ein Security Feature vom Web Browser.

von Jürgen (Gast)


Lesenswert?

Hallo,

vielen Dank für Eure Antworten.

"Du must die Seite auf einem Webserver hochladen ..."

Das war es!

mfg

Jürgen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.