Avatar billede asn24 Nybegynder
23. juni 2008 - 17:04 Der er 28 kommentarer og
1 løsning

Udføre JavaScript loadet med ajax

Hej eksperter!

Hvis jeg vil køre noget JavaScript, jeg har hentet med ajax, har jeg læst mig frem til at jeg skal sammensætte det med eval(); - Jeg synes bare ikke jeg kan få det til at virke.

Pt. får jeg en syntax error på dette kode:

changePage('programinfo.php?program=<?=$programinfo["id"]?>', 'none');
- og hvis jeg tilføjer eval, er siden bare blank når jeg åbner den.

Jeg ved at funktionen changePage virker, da jeg bruger den flere andre steder.

Altså, jeg kan ikke få browseren til at udføre mit JavaScript, efter det er hentet med ajax. - Hvad gør jeg galt?
Avatar billede olebole Juniormester
23. juni 2008 - 17:08 #1
<ole>

Fejlen kan ligge et utal af steder. Prøv at lægge et link til siden - og er den ikke uploaded, så upload den  =)

/mvh
</bole>
Avatar billede w13 Novice
23. juni 2008 - 17:09 #2
Prøv først lige at se i din kildekode, hvad der bliver udskrevet med:

changePage('programinfo.php?program=<?=$programinfo["id"]?>', 'none');

Dvs. hvordan ser den linje ud, når PHP har indsat $programinfo["id"]?

Derudover vil du kunne bruge eval()-funktionen til det du ønsker, men det kræver selvfølgelig, at det er gyldigt JavaScript, du kører funktionen på.
Avatar billede olebole Juniormester
23. juni 2008 - 17:51 #3
- men det ville nok under alle omstændigheder være en fordel, om du lagde et link. Det er absolut uhensigtsmæssigt at bruge get metoden til Ajax-kald - så det er overvejende sandsynligt, der er andre ting, du bør ændre. Det er næsten umuligt at lære at skrive god Ajax gennem tutorials på WWW. De færreste forfattere af Ajax artikler/tutorials kan selv bruge Ajax  =)
Avatar billede asn24 Nybegynder
23. juni 2008 - 18:57 #4
w13 -> changePage('programinfo.php?program=83', 'none'); - eller et hvilket som helst andet tal :)

Link: http://coolfm.develop.befree.dk

Håber i kan se hvor jeg fejler :)
Avatar billede olebole Juniormester
23. juni 2008 - 23:32 #5
Der findes ikke en onchange event på et link. Prøv:
    onclick="changePage('forgotpass.main.php', 'nyheder.php');return false"
Avatar billede asn24 Nybegynder
24. juni 2008 - 05:38 #6
Så kører det :) - Tak.. Har dog også et mere avanceret javascript jeg skal have udført.. Hvordan gør jeg dette:

var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if (hasReqestedVersion) {
    AC_FL_RunContent(
                "src", "<?=IMGALLDIR?>/flash/overskrift_kort?h=LOG IND&d=INDTAST DINE OPLYSNINGER",
                "width", "273",
                "height", "34",
                "align", "middle",
                "id", "Coolmenu",
                "quality", "high",
                "wmode", "transparent",
                "bgcolor", "#5f5f5f",
                "name", "detectionExample",
                "allowScriptAccess","sameDomain",
                "type", "application/x-shockwave-flash",
                'codebase', 'https://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab',
                "pluginspage", "https://www.adobe.com/go/getflashplayer"
    );
} else {
    var alternateContent = 'This content requires the Adobe Flash Player. '
    + '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
      document.write(alternateContent);  // insert non-flash content
}
Avatar billede w13 Novice
24. juni 2008 - 08:09 #7
Hvorfor indsætte Flash med JavaScript? Det får du da ikke meget ud af.

Microsoft har for længst rettet problemet med, at man skulle klikke for at aktivere flash, så det skal man ikke længere.
Avatar billede asn24 Nybegynder
24. juni 2008 - 12:38 #8
Det er også min holdning, men desværre ikke min beslutning. - Plus der jo er fordelen med at søgemaskiner kan læse teksten :)
Avatar billede w13 Novice
24. juni 2008 - 12:53 #9
Søgemaskiner kan vel ikke læse Flash om det sættes ind med JavaScript eller ej? :)

I hvert fald er der ikke én fordel ved at indsætte det med JS.
Avatar billede asn24 Nybegynder
24. juni 2008 - 13:06 #10
Søgemaskinen kan vel læse den tekst der står i første linie:
"src", "<?=IMGALLDIR?>/flash/overskrift_kort?h=LOG IND&d=INDTAST DINE OPLYSNINGER",

Men jeg er stadig enig - Dog bare ikke min beslutning :)
Avatar billede w13 Novice
24. juni 2008 - 13:11 #11
Nå ja, det er korrekt. Den kan se stien, men dog ikke bruge filen til så meget.
Avatar billede asn24 Nybegynder
25. juni 2008 - 01:06 #12
Men hvordan skal jeg bruge eval på det kode for at få det afviklet?
Avatar billede olebole Juniormester
25. juni 2008 - 01:19 #13
Søgemaskiner læser ikke noget mellem script-tags - så nej, det kan ikke læses. Skal søgemaskinen læse noget i den forbindelse, skal det f.eks. skrives i noscript-tags  =)
Avatar billede olebole Juniormester
25. juni 2008 - 01:21 #14
Det skal forhåbentlig ikke afvikles under XHTML - for der giver koden ikke mening.

Hvad vil du bruge eval til - og hvorfor?
Avatar billede olebole Juniormester
25. juni 2008 - 01:25 #15
Én ting er, at innerHTML - som AC_FL_RunContent bygger på - er invalid, men document.write er en total no-go under X(HT)ML
Avatar billede asn24 Nybegynder
25. juni 2008 - 02:02 #16
Jeg gættede på det var eval jeg skulle bruge for at få det til at blive udført? - derfor ;)

Ret mig endelig hvis jeg er helt skævt på den. - Case er at det ikke er op til mig hvordan det flash bliver implementeret, det skal bare være der, så jeg er nødt til at få det til at virke på den måde der :)
Avatar billede olebole Juniormester
25. juni 2008 - 02:31 #17
Der er ikke noget, du behøver bruge eval til  =)

Nej, du er ikke spor skævt på den, men man må også forvente, at folk, man spørger til råds, prøver at lede én mod bedre kode - og gerne vil sikre sig, man virkelig har forstået  ;o)
Avatar billede asn24 Nybegynder
25. juni 2008 - 02:54 #18
Helt bestemt! - Og jeg takker og bukker også ;)

Men hvordan skal jeg så få det afviklet? - Som det ser ud der, loader den det kun når siden ikke loades med ajax :)
Avatar billede olebole Juniormester
25. juni 2008 - 20:37 #19
Hvad mener du med: "når siden ikke loades med ajax"?

Jeg orker ikke pløje 15-16 JS-filer igennem for at finde ud af, hvad der sker på din side. Med mindre du laver noget meget sært, afvikler scriptet i (24/06-2008 05:38:09) helt automatisk  =)
Avatar billede asn24 Nybegynder
25. juni 2008 - 21:48 #20
Når du tilgår siden på en direkte URL, så kører JSen super, og indsætter falshen, men når man hiver det ind over ajax, så spiller det bare ikke overhovedet.

http://coolfm.develop.befree.dk/Konkurrence.html - Der kan du se at falshen afvikles, men går du ind på
http://coolfm.develop.befree.dk og trykker på konkurrencer ser du at det ikke afvikles :)
Avatar billede w13 Novice
25. juni 2008 - 22:12 #21
Jeg synes fint, det afvikles ved tryk på konkurrencer?
Avatar billede asn24 Nybegynder
25. juni 2008 - 22:35 #22
Så du ser de små "flash" overskrifter over hhv. konkurrencerne og nyhederne?
Avatar billede asn24 Nybegynder
25. juni 2008 - 22:48 #23
http://bullrider.dk/exp/coolfmheader.png - Det er disse jeg omtaler :)
Avatar billede olebole Juniormester
25. juni 2008 - 22:57 #24
Det fungerer fint hos mig  =)

Jeg forstår dog ikke, hvorfor du bruger Ajax til indhold. Det er Ajax noget rigtig skidt til. Man kan ikke gemme sit indhold ret meget bedre for søgemaskinerne. Ajax bør aldrig bruges til søgerelevant indhold
Avatar billede asn24 Nybegynder
25. juni 2008 - 23:02 #25
Det skyldes at der skal en lyd-stream af radion på siden, og det ville være ret fesent hvis den blev afbrudt konstant jo :)

Det fungere også her, når jeg loader siden almindeligt, men når jeg så går vidre til et andet menupunkt, så kommer de ikke igen..
Avatar billede olebole Juniormester
25. juni 2008 - 23:16 #26
Ahaaa ... nu kan jeg se, hvad du mener. Det er vel fordi, du bruger innerHTML til at indsætte HTML'en med. Det bruger de fleste såkaldte Ajax libraries, men dels er innerHTML invald og totalt vrøvl under XHTML - og dels overskriver den alle programmatiske referencer til og fra elementer i det fragment, den bruges på.

Når man bruger Ajax, skriver man ikke HTML ud på serveren. I stedet formateres de rå data som JSON (JavaScript Object Notation) eller XML.
Når request dokumentet returnerer til XMLHttpRequest objektet i browseren, oprettes HTML elementer med DOM - hvorefter data fyldes i og elementerne indsættes i HTML dokumentet.

Jeg har vist et par eksempler her:
    http://www.eksperten.dk/spm/817625
Avatar billede asn24 Nybegynder
28. juni 2008 - 00:27 #27
Puha! - det gav godt nok nogle timers læsning og legen rundt - Super artikler du har skrevet på dengodekode.dk!

Desuden har jeg nu fået min chef overtalt til at indsætte flashen på traditionel vis, så nu virker det igen :)

Tusind tak for hjælpen begge 2! - Smid svar og i skal få som fortjent :)
Avatar billede olebole Juniormester
28. juni 2008 - 00:33 #28
Selvtak  ;o)
Avatar billede asn24 Nybegynder
29. juni 2008 - 01:39 #29
Nå.. w13 vil åbenbart ikke have point - De går til olebole alle sammen :)
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