Alert in javascript werkt niet

Status
Niet open voor verdere reacties.

leifoet

Gebruiker
Lid geworden
7 okt 2007
Berichten
326
In de loop van een pagina zou TEST moeten verschijnen - gebeurt niet - moet de functie nog 'aangeroepen' worden ?

<body>
...
<script>
function myFunction()
{
alert("TEST");
}
</script>
...
</body>

Graag een tip. Dank
 
Je roept de functie niet aan.
 
Even een kleine toevoeging op het magere bericht van PHP4U:

Het is juist dat je de functie niet aanroept. Een functie aanroepen doe je door 'myFunction();' boven de functie neer te zetten. Hierdoor zal een alert-box met de tekst 'TEST' worden weergegeven.

Code:
<script>
myFunction();
function myFunction() {
alert("TEST");
}
</script>


Jasper
 
Persoonlijk zou ik de functions bovenaan zetten, en niet onderaan waar je ze aanmaakt.
 
Persoonlijk zet ik vrijwel alle scripts onderaan vlak boven </body> in verband met performance, tenzij het niet anders kan.
Niet alleen (levende) bezoekers maar ook Google houdt van snelle websites, zie PageSpeed Insights.
 
Dat wel, maar als je dan de .js-files embed, dan zou ik de functions bovenaan zetten.
 
In jQuery is er de $(document).ready(function(){...}) zodat jQuery scripts onderaan kunnen staan.
Dit kan ook in Javascript met de volgende functie.
Code:
function docready(f){/in/.test(document.readyState) ? setTimeout('docready('+f+')',9) : f()}

// voorbeeld in Javascript
docready(function(){
  alert('DOM is klaar');
  // hier komt DOM afhankelijke javascript
});
Bovenaan in de <head> wordt al teveel tijd verspilt met het laden van de stylesheets en externe fonts.
Externe fonts laad ik soms ook onderaan via Javascript, dat geeft veel tijdwinst.

Wel kan ik mij vinden in het bovenaan laden van de jQuery library zodat een bepaalde functionaliteit zoals een foto slider eerder zichtbaar is. Hiervoor wordt dan het bijbehorende script IN de html gezet waardoor onderhoud onvriendelijker is. Dus zoals ik al zei, alleen als het niet anders kan.
 
@leifoet. Je vraag is denk ik opgelost. Als dit niet het geval is zorg dan dat de functie is gedeclareerd voordat je 'm gaat aanroepen. Met andere woorden:
Code:
Dit werkt niet

<script>myFunction();</script>
<script>
function myFunction() {alert("TEST");}
</script>

Dit werkt wel

<script>
function myFunction() {alert("TEST");}
</script>
<script>myFunction();</script>
 
De syntax is mij nu duidelijk - Dank allen voor de toelichtingen.

Heb nog dit aanverwant probleem : hoe een variabele uit een database definiëren (om te gebruiken in de alert-tekst) ?
Probeerde dit (ASP classic) - lukt niet (niet-databasevariabele werkt wel) :
var testnaam = (<%rsDATABASE("name")%>);
Graag een tip om hier de correcte syntax te kunnen coderen.
 
PHP en ASP zijn serverside (worden uitgevoerd op de server)
Javascript is clientside (worden uitgevoerd in de browser)
Deze kan je niet door elkaar mengen.

Wel kan je op de server met echo("alert('TEST');") (in php) of met <% ="alert('TEST');" %> (in asp) een stukje Javascript schrijven dat in de html zichtbaar is en in de browser wordt uitgevoerd. Andersom gaat niet lukken. Je kan in Javascript niet rechtstreeks dingen op de server doen. Hiervoor is wel ajax (klik) evt met json in het leven geroepen maar dan moet op de server de bijbehorende php worden gemaakt (ik weet niet hoe dit gaat in asp).

btw: zit je werkelijk op een ASP server?
 
Laatst bewerkt:
Zijn dit (ongeveer) de te volgen stappen ?
1. een stukje Javascript schrijven dat in de html zichtbaar is en in de browser wordt uitgevoerd : <% ="alert('TEST');" %> ? (ASP server, geen PHP = pech!)
Waarom in ASP en niet Javascript ?
Wordt de function daardoor vervangen ?
<script>
function myFunction() {alert("TEST");}
</script>
<script>myFunction();</script>

2. met ajax (voor ASP?) de benodigde velden selecteren/opvragen in de database ?
3. hoe deze dan invoegen in het javascript ?

Dank voor verduidelijking.
 
Laatst bewerkt:
Ikzelf gebruik voor AJAX in JavaScript de jQuery library.
 
Als leek in de combinatie 'Javascript - Ajax - JQuery' is het gebruik van de jQuery library (nog) niet duidelijk voor de oplossing van mijn alertvraag.
M.a.w. hoe kom ik met deze tool tot de invulling van een alert window met gegevens uit een access database (ASP code)
Bijvoorbeeld
'Hello world' in het alertvenster wil ik vervangen door 'Hello PHP4U' waarbij 'PHP4U' of 'bron' of 'Jaspertjeh' of ... (telkens als 'name') uit een bestaande databasetabel worden gehaald.

Graag als het kan enige (detail)verduidelijking over de diverse fasen/stappen in de codering - Dank.
 
Je zult aller eerst serverside de gegevens moeten ophalen. Jij zegt dat je ASP gebruikt, maar ik heb daar geen ervaring mee.
Kijk eens hier: https://www.w3schools.com/asp/webpages_database.asp

Als dat werkt, dan kan je je verdiepen in AJAX, en dan raad ik aan om de jQuery-library te gebruiken. Deze werkt op JavaScript en zorgt voor een makkelijke implementatie van AJAX-requests om asynchroon de serverside asp-file aan te roepen, en de uitvoer daarvan te verwerken in je HTML-code. Verder kan je met jQuery veel meer dan dat, zoals het aansturen van de DOM (alle HTML-elementen), voor bijvoorbeeld mooie effecten en visuele hulpmiddelen voor je gebruikers. Zoals onnodige formulier-elementen uitschakelen bij bepaalde keuzes.

Dit onderaan in je <body>-sectie.
Code:
<script
src="http://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha256-3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E="
crossorigin="anonymous"></script>

Dit in je <head>-sectie van je site.
Code:
<script>
$.ajax({
    url: 'script.asp',
    cache: true,
    dataType: 'html',
    success: function(html) {
      alert('De data in je bestand is: '+data);
    },
    error: function(xhr, ajaxOptions, thrownError) {
        alert('Er is een fout opgetreden:' + xhr.status + ' ' + thrownError);
    }
});
</script>
Als alles goed is, moet je een alert zien.
 
Laatst bewerkt:
RE: geen PHP = pech!
W3schools: "ASP is an old tool for making dynamic Web pages."
Waarom niet overstappen naar PHP in de html pagina in plaats van ASP VBScript? Andere host provider misschien?

RE: Wordt de function daardoor vervangen?
Dit is nooit mogelijk.

RE: Waarom in ASP en niet Javascript?
Dit kan handig zijn als je een ASP variabele (server) wil gebruiken in je Javascript (browser). Als voorbeeld (als niet-asp'er) zoiets als
Code:
u=hour(time)
<%= '<script>function myFunction() {alert("' & u & '");}</script>' %>
<button onclick="myFunction();"></button>
RE: met ajax (voor ASP?) de benodigde velden selecteren/opvragen in de database? + Hoe deze dan invoegen in het javascript?
Een compleet voorbeeld vind je hier (klik) .
 
Laatst bewerkt:
ASP mag dan wel oud zijn, maar volgens mij is ASP.net wel iets wat tegenwoordig zeer actueel is.
Maar voor PHP is er meer ondersteuning, kan ik je vertellen, plus dat de support-groep groter is. ;)

Onthoud wel dat het voorbeeld van Bron de 'Vanilla JavaScript' is, en dus de echte JavaScript zonder libraries. Je moet dan voor een AJAX-request een hoop fratsen uithalen om dit bij elke browser te laten werken, als je tenminste ook oudere browsers wilt laten ondersteunen.
 
Laatst bewerkt:
ASP mag dan wel oud zijn, maar volgens mij is ASP.net wel iets wat tegenwoordig zeer actueel is.
De TS werkt hier met het verouderde ASP Classic Web Pages, niet met ASP.net.

Onthoud wel dat het voorbeeld van Bron de 'Vanilla JavaScript' is, en dus de echte JavaScript zonder libraries.
Het voorbeeld is van W3schools :p niet van mij. Het gaat in dit voorbeeld met name om het ASP Web Pages script én om te laten zien wat de eenvoud is zonder direct gebruik te maken van libraries. Dit neemt niet weg dat clientside een library veel werk uit handen kan nemen. Serverside moet het bijbehorende script ook nog worden gemaakt, dat kan je niet in jQuery doen.
 
Laatst bewerkt:
Dank voor de nuttige info.
Zal het AJAX-toepassing uitproberen in ASP; eerst wil ik een session variable : Session("MemX") in de alert invoegen, wat ook nog niet lukt => undefined
De variabele in een niet-alert-toepassing geeft wel het gewenste resultaat.

<script>
<%member = Session("MemX")%>

var name = member;

function myFunction()
{alert("Hoi "+name+",\nBlaBlaBla");
}
</script>
<script>myFunction();</script>

Ik vermoed dat mijn syntax niet OK is ?

Overigens, indien ik een knop zou vinden waarmee ik alle ASP-toepassingen met een simpele druk zou kunnen overschakelen in PHP ...
Mijn eerste code was PHP (cfr. hierboven opgesomde voordelen) maar de toenmalige server draaide alleen ASP - door gebrek aan kennis (o.a. van servers) is het daarna ASP classic gebleven.
 
Je zult het moeten herschrijven naar PHP. Een simpele knop die ASP naar PHP omzet bestaat niet. Tevens moet je serverbeheerder ook PHP hebben geïnstalleerd op de server.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan