Txt bestand opvragen met AJAX werkt niet in Firefox

Status
Niet open voor verdere reacties.

NielsDesmet

Gebruiker
Lid geworden
19 mei 2008
Berichten
301
Ik ben wat aan het experimenteren met AJAX; Ik heb het volgende script:
[JS]
var lol = new XMLHttpRequest();
lol.onreadystatechange = function()
{
if(lol.readyState == 4)
{
alert("Response: "+lol.responseText);
}
}
lol.open("GET", "http://examen7.kaoudenaarde.be/test.txt", true);
lol.send(null);
[/JS]
Internet Explorer 8 geeft het juiste resultaat: "Response: testje", maar als ik de pagina open met Firefox 3.5 krijg ik gewoon een lege string terug: "Response: ".
Enig idee hoe dit komt?
 
Volgens mij kun je vanwege veiligheidsredenen alleen bestanden op het eigen domein (waar de ajax code draait) op die manier opvragen. Er vanuitgaande dat je het script draait op http://examen7.kaoudenaarde.be/ zul je dus "test.txt" moeten opvragen en niet "http://examen7.kaoudenaarde.be/test.txt".
 
Ik heb eens gekeken met Firebug en die geeft inderdaad een fout in de console:
Code:
GET http://examen7.kaoudenaarde.be/test.txt   206 Partial Content   (fout-icoontje)   99ms

Bij "headers":
Antwoordheaders
Date	Sun, 27 Sep 2009 11:32:20 GMT
Server	Apache/1.3.37 (Unix) mod_ssl/2.8.28 OpenSSL/0.9.7a PHP/5.2.8 mod_perl/1.29 FrontPage/5.0.2.2510
Last-Modified	Sat, 26 Sep 2009 20:42:30 GMT
Etag	"3d8c238-6-4abe7cb6"
Accept-Ranges	bytes
Content-Length	6
Content-Range	bytes 0-5/6
Keep-Alive	timeout=5, max=499
Connection	Keep-Alive
Content-Type	text/plain

Verzoekheaders
Host	examen7.kaoudenaarde.be
User-Agent	Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language	nl,en-us;q=0.7,en;q=0.3
Accept-Encoding	gzip,deflate
Accept-Charset	ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive	300
Connection	keep-alive
Origin	null
Als het inderdaad komt door mijn beveiligingsinstellingen, welke instellingen zou ik dan moeten aanpassen om het te laten werken?
 
Ik zou zo niet weten waar je dat kunt aanpassen, maar de fout die FireBug geeft is partial content. Not sure waarom dat een fout is, want 2xx headers geven in principe aan dat de request gelukt is.

Maar als je AJAX op een site zou willen gebruiken, dan heeft het natuurlijk geen zin om lokaal je beveiligingsinstellingen te wijzigen.

Wat misschien een workaround voor dit probleem is, is met een PHP script de inhoud van de tekstfile opzoeken, en de AJAX-request naar dat PHP script doen, dat gewoon op jouw server draait.
 
Zoals flitsflitsflits al zei, AJAX heeft zo'n heerlijk hinderlijke same-orgin security gedoe. Dus, lekker geen bestanden van andere 'locaties' afhalen.

Als ik hier (lokaal dus) met firefox het bestand oproep, werkt het.

Het idee is dus dat je vanaf het script bestanden kan aanroepen. Dit gaat vanaf het script bestand. Dus, als je 'test.txt' wilt hebben, maar je er dit van:[JS]lol.open("GET", "test.txt", true);[/JS]en als 'test.txt' in een map genaamd 'bbqsaz' staat, dit:
[JS]lol.open("GET", "bbqsaz/test.txt", true);[/JS]



:thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan