javascript function eksekveres ikke

Tags:    javascript function

Jeg har oprettet en fil der hedder uddannelse.php som kalder kal.php via body onload.
Uddannelse.php virker korrekt.
kal.php har en javascript funktion kaldet reserver().
Når kal.php kaldes gennem uddannelse.php virker funktionen ikke.
Men når jeg kalder filen kal.php direkte i browseren, virker funktionen.
Jeg kan ikke finde ud af fejlen, har ikke arbejdet særlig meget med javascript

link 1: http://prosalg.nu/uddannelse.php?uddannelse=2
link 2: http://prosalg.nu/kal.php?month=01&year=2018

kode uddannelse:
Fold kodeboks ind/udPHP kode 



Kode kal.php:
Fold kodeboks ind/udPHP kode 





Indlæg senest redigeret d. 25.01.2018 21:34 af Bruger #16819
8 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hej Søren.

JavaScripts bliver eksekveret af browseren. Åbnes kal.php i en browser, når du kalder den via uddannelse.php? Mig bekendt kan JavaScripts ikke afvikles af ActiveXObjektet (XMLHTTP).

/Sven



Du kan bruge browserens udviklerfunktion til at finde fejl ved afviklingen af javascript.

Fold kodeboks ind/udKode 


Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 26.01.2018 23:34 af Bruger #10216
ved et tryk på en af de grønne datoer i Tilmelding får du denne fejl
uddannelse.php?uddannelse=2:1 Uncaught ReferenceError: reserver is not defined at HTMLButtonElement.onclick (uddannelse.php?uddannelse=2:1)


prøv at flytte js functionen reserver ud i en extern fil du loader i uddannelse.php, istedet for at have den ligggende i kal.php

idet hele taget er AJAX ikke beregnet til at retunere HTML kun rå data, som i starten var i XML format, nu primært er i JSON format

jeg ville lade kal.php retunerer en array af optaget tider i JSON format, og lave alt HTML formateringen i uddannelse.php i denne blok
Fold kodeboks ind/udKode 





Hej Søren.

JavaScripts bliver eksekveret af browseren. Åbnes kal.php i en browser, når du kalder den via uddannelse.php? Mig bekendt kan JavaScripts ikke afvikles af ActiveXObjektet (XMLHTTP).

/Sven


Hej Sven, tak for dit input.
Jeg har fundet en tutorial:
https://www.w3schools.com/php/php_ajax_database.asp
Jeg så har bygget videre på. Måske derfor jeg har lidt problemer:




Lige en tanke - du kunne jo prøve at flytte koden fra kal.php ind i uddannelse.php. Kræver måske en smule omskrivning og der findes måske pænere løsninger, men om ikke andet kunne du få prøvet din kode af.

Alternativt kunne JavaScriptet i kal.php måske skrives om til php, men det kommer også an på, hvordan du vil have funktionaliteten til at være.



@Søren Jacobsen:
hvor har du kalender classen fra ??


det de gør på w3schools er retunerer en færdig HTML side uden noget dynamisk, ofte springer w3schools over hvor gærdet er lavest
din kal.php bør ikke indeholde andet en dette:
(utested)
Fold kodeboks ind/udKode 

resten er JS, AJAX er ca 75% js, laves ofte vha feks jquery

Lige en tanke - du kunne jo prøve at flytte koden fra kal.php ind i uddannelse.php.

det er præcis det der skal laves i denne js block
Fold kodeboks ind/udKode 

js functionen reserve skal også ligge her i uddannelse.php

Alternativt kunne JavaScriptet i kal.php måske skrives om til php

så skulle hele siden bare reloades hver gang, man skifter måned, hvilke nok er det nemmeste, istedet for at lade kalenderen komme vi AJAX, men det er ikke det mest data mæssige effektive




Så fik jeg endelig lavet min php kode om til JavaScript, og flyttet det til uddannelse.php
Så nu virker min reserver funktion :-)
Jeg har indtil videre beholdt al js i samme fil.
har forsøgt at gemme det i kal.js og kaldt filen via denne kode:
Fold kodeboks ind/udJScript kode 

men filen bliver ikke indlæst..

kal.php er blevet modificeret så den nu udskriver følgende for Januar måned:
["17","19","22","23","24","25","26","27","28","28","31"]
hvilket er de dage som er "optaget"
http://prosalg.nu/kal_4.php?month=01&year=2018
Fold kodeboks ind/udPHP kode 


uddannelse.php:
https://prosalg.nu/uddannelse_4.php?uddannelse=2
Fold kodeboks ind/udPHP kode 

Så langt så godt, nu er det "kun" følgende funktion som volder mig problemer:
Fold kodeboks ind/udJScript kode 

i stedet for at skrive kal_4.php til days, kan der så oprettes et js array som jeg kan arbejde med?
eks.: var optaget = this.responseText; return optaget;
så kunne jeg måske lave denne form for sammenligning som jeg gjorde i php:
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 31.01.2018 07:58 af Bruger #16819

Så langt så godt, nu er det "kun" følgende funktion som volder mig problemer:

kig på dette lille eks

Fold kodeboks ind/udKode 


kal.php (test)
Fold kodeboks ind/udKode 






så kunne jeg måske lave denne form for sammenligning som jeg gjorde i php:

en del php functioner er omskrevet til js, og kan hentes fra http://locutus.io/php/



t