Avatar billede usse Nybegynder
06. marts 2008 - 16:43 Der er 6 kommentarer og
1 løsning

XMLHttpRequest open ikke tilladt i FF?

Jeg roder lidt med noget AJAX kombineret med servlets, det virker med IE, men firefox melder den følgende exception: adgang nægtet til  kaldemetoden XMLHttpRequest.open.

request metoden hvori open metoden ligger ser sådan ud:
function startRequest()
{
        createXmlHttpRequest();

        var u1 = document.form1.user.value;
        xmlHttp.open( "GET", "http://localhost:8080/cool/servlet/AjaxResponse?user="+u1, true );
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
        xmlHttp.onreadystatechange=handleStateChange;
        xmlHttp.send(null);
}

filerne ligger
\Tomcat 6.0\webapps\cool\FirstAjax.html <-- javascript
\Tomcat 6.0\webapps\cool\WEB-INF\classes\AjaxResponse.class <-servlet

nogle forslag til ændringer?
Avatar billede Slettet bruger
06. marts 2008 - 16:53 #1
Handlerne hedder forskellige ting i de forskellige browsere. Så man starter normalt med at teste efter dem.

Der er nogle interessante artikler om det hos IBM developerworks
Avatar billede olebole Juniormester
06. marts 2008 - 16:56 #2
<ole>

Nej handlerne hedder præcist det samme i alle browsere, der understøtter XMLHttpRequest. Eneste forskel er selv instantieringen af XMLHttpRequest objektet. Til det har jeg skrevet en lille, fiks wrapper, som sørger for ens interface i forskellige browsere:
    http://www.dengodekode.dk/artikler/ajax/xmlhttprequest_wrapper.php

"nogle forslag til ændringer?" >> Ikke i forhold til fejlen, men for at undgå memory leaks i IE bør du bruge 'post' i stdet for 'get' - og så bør du altid encode dine variabelværdier med ecodeURIComponent.

Sålænge du kalder via HTTP-protokollen, burde der ikke være problemer. Det er jeg i hvertfald aldrig selv stødt ind i - og jeg har ellers testet voldsomt mange Ajax-apps/scripts på en lokal server.

Hvad sker der, hvis du bruger IP eller domæne - i stedet for 'localhost'?

/mvh
</bole>
Avatar billede usse Nybegynder
06. marts 2008 - 18:45 #3
tak for inputs, men det har ikke løst mit problem selvom jeg har prøvet at bruge ipen istedet for localhost
Avatar billede thesurfer Nybegynder
06. marts 2008 - 19:02 #4
Hvis jeg ikke tager fejl, tillades AJAX normalt kun at indlæse filer der ligger i samme mappe, som filen med AJAX koden..

Adresser som f.eks. "http:..." tillades ikke pga sikkerhedsmæssige årsager..

Browseren Opera nægter også filnavn/adresser der ikke ligger i samme mappe..
Avatar billede thesurfer Nybegynder
06. marts 2008 - 19:05 #5
Eksempel:

- Virker fint:
index.htm -- indeholder AJAX kode
data.htm -- denne fil ligger i samme mappe som index.htm
Kode: "data.htm"

- Virker IKKE:
index.htm -- indeholder AJAX kode
mappenavn/data.htm -- denne fil ligger i en UNDERMAPPE (en anden mappe)
Kode: "mappenavn/data.htm"


Den del kan olebole måske forklare lidt om..

PS: Brug "POST" i stedet for "GET" da "GET" forårsager memoryleaks i Internet Explorer..
Avatar billede olebole Juniormester
07. marts 2008 - 01:31 #6
"Hvis jeg ikke tager fejl" >> det gør du  :)

Du kan ikke foretage X-Domain requests, men du kan godt kalde rundt omkring indenfor samme domæne.

Bruger man get, cacher IE reponsen, hvilket hober sig op i hukommelsen. Det sker ikke ved post.
Avatar billede usse Nybegynder
03. februar 2009 - 20:49 #7
Har fundet ud af det eftersom jeg har fået mere erfaring..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester