Avatar billede shjorth Nybegynder
04. april 2012 - 10:10 Der er 14 kommentarer og
1 løsning

jQuery ajax problemer

Hejsa.
Jeg benytter nedenstående script til at kalde ajax requests, og det virker fint for mig.
Der er dog desværre nogle brugere der oplever at det ikke virker, og jeg kender desværre ikke meget til deres browser setup osv, så det jeg ville høre er om der findes en metode der kan gøre nedenstående lidt mere "fail safe" ?

På forhånd tak:

var xhr;
function Fetch(afile,adivr) {

// Process Ajax
    var htm = afile.split('?');
    var xhr = $.ajax({
        type: "GET",
        url: htm[0],
        data: htm[1],
        cache: false,
        success: function(html){
            gi("loaderdiv").style.display='none';

            $(gi(adiv)).fadeIn(100);
          $('#'+adiv).html(html);
        }
    });
    // Set global process ID
    window['xhr'] = xhr;
return false;
}

Jeg kalder scriptet med:
<a href='noget.php' target='_top' onClick="Fetch('noget.php','div');return false;">tryk her</a>
eller
<a href='java script:void(0);' onClick="Fetch('noget.php','div');">Tryk her</a>
Avatar billede The_Buzz Novice
04. april 2012 - 10:25 #1
Er der en URL vi kan se det på?
Avatar billede shjorth Nybegynder
04. april 2012 - 10:39 #2
www.lyngbugten.dk/test/

Det er hurtigt strikket sammen med det viste script.

Som du kan se (forhåbentlig) så virker det jo fint.
Der er bare nogle brugere som oplever at:

Med void(0); sker der intet når de trykker
Med target _top bliver de sendt til href linket.
Avatar billede shjorth Nybegynder
04. april 2012 - 11:40 #3
Ja, jeg er kommet frem til at problemet er Safari.

Men hvordan ind i h...... optimerer jeg det script så det ligeledes virker til safari ? :)
Avatar billede olebole Juniormester
04. april 2012 - 12:06 #4
<ole>

Safari under Windows eller MacOS? Det virker fint i Safari under Win7

/mvh
</bole>
Avatar billede shjorth Nybegynder
04. april 2012 - 12:16 #5
Ja, det viser sig at det kode eksempel jeg smed op virker fint i safari, men går jeg ind på live siden så virker det ikke.

Så problemet må jo ligge et andet sted, men jeg har absolut ingen anelse om hvor.

Jeg får enda inden script fejl fra safair, den viser bare "Loading baren" og stopper så der
Avatar billede olebole Juniormester
04. april 2012 - 12:41 #6
Vi andre kan jo umuligt have nogen anelse. Læg et link til siden
Avatar billede shjorth Nybegynder
04. april 2012 - 12:44 #7
Nej det er klart, men så blev det tilgengæld en del mere komplekst.

Jeg er nu nået frem til at det drejer sig om PHP sessions.

Scriptet checker efter en session, og hvis den ikke er der skal den redirecte med lidt JS.
Den del virker fint i alle browsere, men i safari, kan jeg ikke få adgang til denne session.

Så spørgsmålet er nu og der er en helt anden metode der skal bruges i safari når man vil store en session ?

Jeg bruger
<?
session_start();
$_SESSION['test'] = "bla";
?>

Men i safari er denne session altså ikke tilgængelig
Avatar billede olebole Juniormester
04. april 2012 - 12:51 #8
En session høre til på serveren og har i sig selv ikke noget med browseren at gøre. Det kunne være fordi, cookies er slået fra i Safari(?)
Avatar billede shjorth Nybegynder
04. april 2012 - 13:13 #9
Nå.

Det viser sig at safari ikke accepterer sessions når de hentes via ajax på facebook platformen.

Jeg går ikke ud fra det er noget i ved noget om ?
Avatar billede olebole Juniormester
04. april 2012 - 15:08 #10
Jo, sites som Facebook og Google prøver at bruge cross domain cookies for at kompromitere og snage i brugernes privatliv. Desværre er skræmmende mange blevet så dybt afhængige af Facebook, at de blæser på at være under tættere overvågning end nogen diktaturstat nogensinde har kunnet drømme om at etablere.

Godt nok hører Safari - sammen med Google Chrome - til i bunden af markedet, hvad sikkerhed angår, men her har de om ikke andet tænkt sig en smule om.

Problemet er ikke, at Safari ikke modtager cross domain cookies. Det er, at du helt frivilligt kan få den vanvittige tanke at basere din applikation på en teknik, der kompromiterer dine brugeres privatliv. 'Nyttige idioter' kaldte man vist den slags under Den Kolde Krig. Dengang, det var Stasi - og ikke Facebook og Google - man fodrede med informationer med lusket oprindelse  *o)
Avatar billede shjorth Nybegynder
04. april 2012 - 15:18 #11
Når man bygger en fb app, er man nødt til at benytte sig af de teknikker facebook har stillet til rådighed, for at kunne få en brugers ID.

Den ene af dem er at skulle gemme en brugers id i en session for så at kunne hente de brugeroplysninger der skal bruges. Ligesom et login på en hvilken som helst anden side.

At facebook ikke har lavet deres biblioteker ordentligt kan jeg ikke udtale mig om, men det er nu engang sådan det skal gøres.

Når det så er sagt, så er det kun safari der har det her problem og altså ikke Chrome, ie, ff
Avatar billede olebole Juniormester
04. april 2012 - 15:35 #12
Det ved jeg alt om. Det er en af grundene, jeg ikke laver FB-apps - og ikke har en FB-konto. Der er jo nemlig ingen, der siger, at det skal gøres sådan. Man kan jo bare lade være med at lave app'en  =)

Nej, Google har stor interesse i at bruge cross domain cookies for at kunne spionere blandt sine brugere, så de har har næppe implementeret denne sikkerhedsfeature i Chrome ... desværre
Avatar billede shjorth Nybegynder
04. april 2012 - 15:44 #13
Vi kan sikkert hurtigt blive enige om det er noget bras.
Men det giver nogle fantastiske muligheder for at udvikle apps med en relativt høj success rate, hvad enten man kan lide det eller ej ;)

Hvor om alting er, så bliver det nok ikke så ligetil at finde løsningen.

TIL dem der måtte have interesse har jeg fundet flg information om problemet: http://facebook.stackoverflow.com/questions/2691864/facebook-iframe-app-with-multiple-pages-in-safari-session-variables-not-persisti
Avatar billede olebole Juniormester
04. april 2012 - 15:58 #14
Præcis: "hvad enten man kan lide det eller ej".

Men jeg ønsker ikke at booste min successrate på bekostning af brugernes sikkerhed eller kompromitering af deres privatliv. Jeg vedgår dog gerne, at det bliver vanskeligere og vanskeligere at være webudvikler og samtidig udvise etisk forsvarlig adfærd. Det er snart ved at være mere anstændigt at være gadeluder!  :o|
Avatar billede shjorth Nybegynder
04. april 2012 - 16:25 #15
Ja det er ikke nemt.

Jeg lukker ned her. Takker for inputs, og hvis i skal have points må i sige til :)
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