Avatar billede primdal Nybegynder
01. februar 2013 - 19:36 Der er 16 kommentarer og
1 løsning

Få en variable fra ekstern server uden jQuery

Jeg ved at dette nemt kan lade sig gøre med jQuery men jeg ønsker i dette eksempel at bruge javascript.

Det jeg skal er blot at få et user id fra et eksternt domain hvis brugeren kommer til en hjemmeside fra et anden url og så gemme den som cookie. Jeg har lavet følgende javascript, og den gemmer det ganske fint som en cookie, men jeg kan jo ikke tilgå cookien før siden har reloaded igen, og jeg vil meget gerne have id med det samme da det skal bruge, her min code:

https://gist.github.com/4691653

Som I kan se prøver jeg at skrive author ud til consolen 2 gange, og problemet er at den sidste console.log bliver kørt før den console.log som er inde i min function. Dette ville jeg meget gerne undgå det javascriptet ikke skal have lov til at forsætte før jeg har id.

Håber det giver mening.
Avatar billede jakobdo Ekspert
01. februar 2013 - 20:47 #1
Du bliver jo netop nød til at være afhængig af funktionen:

setAuthorCookie()
Det er jo først når den eksekveres, af data er kommet retur fra dit kald til den anden server.
Avatar billede olebole Juniormester
01. februar 2013 - 21:10 #2
<ole>

- og har du mon overvejet, hvad referrerDomain indeholder, når brugeren kommer fra siden: http://www.domain.dk/foo/bar.php?

Noget siger mig, at det er op til en del tilfældigheder, hvornår denne betingelse er opfyldt:

if ( ownDomain != referrerDomain) {

/mvh
</bole>
Avatar billede CCodam Nybegynder
02. februar 2013 - 00:45 #3
jQuery = Javascript

jQuery har bare lavet en masse funktioner, så du i mindre grad skal tænke på selv at lave den besværlige javascript kode.

Men du kan læse om AJAX her:
http://www.w3schools.com/ajax/default.ASP
Hvilket er den teknik man bruger, til det du efterspørger
Avatar billede olebole Juniormester
02. februar 2013 - 01:06 #4
Neeej!, Please  =)

w3schools.com's såkaldte 'Ajax' tutorial har stort set ikke noget med Ajax at gøre. Den har aldrig lært nogen, hvad Ajax er - eller hvordan det fungerer. Den har til gengæld spredt stor forvirring om emnet. Det vidner databasen på dette og mange andre udviklerfora om.

Så hellere anbefale at bruge jQuery, selvom man ikke lærer alm. JavaScript/DOM syntaks af det  =)
Avatar billede primdal Nybegynder
02. februar 2013 - 08:54 #5
Tak for svarene.

XMLHttpRequest kan ikke bruges da det jeg laver et request til en ekstern server.
Avatar billede jakobdo Ekspert
02. februar 2013 - 10:18 #6
ajax -> jsonp er jo netop det du rent faktisk laver via din script include og så en callback. Og det kan sagtens laves via ajax.
Avatar billede primdal Nybegynder
02. februar 2013 - 10:34 #7
Da jeg prøvede med XMLHttpRequest løb jeg ind i origin policy og ledt søgen på internettet fortalte mig at man med XMLHttpRequest ikke kan lave en request til et ekstern domain.

Men korrekt den måde jeg laver det på er jo en form for Ajax, jeg sagde bare at XMLHttpRequest ikke kan bruges og det var det som olebole henviste til.
Avatar billede olebole Juniormester
02. februar 2013 - 13:00 #8
Nej, jeg henviste ikke til XHR som en løsning. Jeg anførte blot, at hvis man ønsker at bruge Ajax, er w3schools.com det dårligste sted at begynde ... så hellere jQuery  =)

Søgninger på WWW lyver ofte, og din har i hvertfald ikke fortalt dig hele sandheden. Det er meget almindeligt at bruge Ajax (XHR) til den slags ting. Man foretager et XHR-kald til egen server, som kalder den fremmede server - og responsen sendes tibage. Så har du ingen problemer med 'same origin policy'
Avatar billede primdal Nybegynder
02. februar 2013 - 13:26 #9
Kan du sende mig i den korrekte retning hvor jeg kan se hvordan man lave et sådan XHR kald med javascript, for med jQuery kan jeg sagtens lave det.
Avatar billede primdal Nybegynder
02. februar 2013 - 13:27 #10
Og kom lige til at se at det ikke var dig som anbefalede W3schools, beklager.
Avatar billede olebole Juniormester
02. februar 2013 - 13:45 #11
Ja, det kan jeg godt, men hvad er det, der skal sendes?

Den variabel, du i dit script kalder referrerDomain, indeholder måske et eller andet. I de tilfælde, den faktisk indeholder noget, kan den under gunstige forhold indeholde det domæne, brugeren kommer fra.

Med andre ord: Du kan aldrig være sikker på, hvor brugeren kommer fra.

Browseren skal ikke sætte document.referrer, og den er nem at ændre, uden du kan se det. Desuden vil referrerDomain indeholde strengen 'www', hvis brugeren kommer fra http://www.domain.dk/foo/bar.php.

Er det godt nok?
Avatar billede olebole Juniormester
02. februar 2013 - 13:51 #12
Glem kommentaren "Desuden vil referrerDomain indeholde strengen 'www', hvis brugeren kommer fra http://www.domain.dk/foo/bar.php."[/i]. Det er noget vrøvl  =)
Avatar billede primdal Nybegynder
02. februar 2013 - 14:03 #13
Det er fint nok at sende hele document.referrer for på server siden har jeg php og det er jeg heldigvis meget bedre til.

Jeg vil bare gerne vide om du kan anbefale nogle steder hvor jeg kan læse/lærer at lave en XHR request via javascript.
Avatar billede olebole Juniormester
02. februar 2013 - 14:21 #14
Så er der vist gået ged i Ekspertens formatering igen!  :D

Anyway, så tror jeg, du har misforstået. document.referrer vil somme tider være tom eller indeholde noget, som ikke passer med virkeligheden. Du har ingen somhelst garanti for, hvad der står i den. Er det godt nok?
Avatar billede olebole Juniormester
02. februar 2013 - 14:48 #15
Du kan jo også bruge $_SERVER['HTTP_REFERER'] på serveren. Så har du det samme som document.referrer, endnu før dokument har ramt browseren.

Den har dog præcis den samme bagdel: Man jan ikke stole på, hvad der står i den
Avatar billede primdal Nybegynder
02. februar 2013 - 15:33 #16
Jeg er nærmest ligeglad med hvad der er i document.reffere det jeg ønsker at hvordan man sende en request til en ekstern server.
Avatar billede primdal Nybegynder
18. marts 2013 - 07:07 #17
svar
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

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