Waarom werkt dit niet, FireFox geeft de fout: calc_chmod is not defined
Want als ik onderstaande code in een site zet.
Dan als ik dan iets invoer in die calculator gebeurt er niks en FireFox geeft rechts onder () een fout en die fout is: calc_chmod is not defined (hoe vaker ik iets indrukt hoe meer fouten) maar die is wel gedefined in het cmhod.php bestand maar waarom werkt dit niet?
Dit is een stuk van het lay-out bestand.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script type="text/javascript">
function link( url )
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("sitecontent").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
<a href="#" onclick="link('nl/software/chmod/')">CHMOD</a>
<tr>
<td width="654" height="524" valign="top" bgcolor="#FFFFFF">
<div id=sitecontent>
</div>
</td>
</tr>
function link( url )
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("sitecontent").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
<a href="#" onclick="link('nl/software/chmod/')">CHMOD</a>
<tr>
<td width="654" height="524" valign="top" bgcolor="#FFFFFF">
<div id=sitecontent>
</div>
</td>
</tr>
Gewijzigd op 24/05/2010 10:07:15 door Robin van der Vliet
Die moet dan eerst nog ge-evalt worden, anders is het gewoon data.
Gewijzigd op 24/05/2010 10:17:21 door Robin van der Vliet
php scripts staan op de server
het is met javascript mogelijk een request te doen bij de server, de server geeft dan iets terug, en met die teruggave kan je iets aanvangen
Denk dat je nog maar eens dit moet doornemen
http://www.w3schools.com/ajax/default.asp
of je pakt jquery of een ander javascript framework
Note: eval valt bij mij onder het kopje `bad practice`
Gewijzigd op 24/05/2010 10:20:45 door Noppes Homeland
ajax dynamically load javascript
http://ajaxpatterns.org/On-Demand_Javascript
http://www.activewidgets.com/javascript.forum.6114.43/dynamic-load-javascript-from-javascript.html
Edit: Oh, eval is evil, klopt. Moet hij ook weten, dus moet hij wel naar iets anders gaan zoeken. Maar in ieder geval moet die code nog uitgevoerd worden, en om dan de response te evallen is wel heel erg makkelijk.
edit: het is maandag
Gewijzigd op 24/05/2010 12:18:35 door Willem Jan Z
Willem:
Kap eens met dat eval=evil. Gebruiken jullie wel eens JSON? Hoe denk je dat dat werkt? Eval is pas evil als een programmeerprogrammeur het op een verkeerde manier gebruikt.
edit: het is maandag
edit: het is maandag
Waarom denk je dan dat ik eerst over eval heb en dan niet?
Omdat het van de situatie afhangt. Als je gewoon een script wilt laden, dan kan je net zo goed een nieuw script element toevoegen, maar als je dus json hebt, dan heb je weer eval nodig.
Eval = evil hoeft niet te betekenen dat eval zelf gevaarlijk is, kan ook betekenen dat het gevaarlijk is voor programmeurs (althans zo denk ik erover).
Willem:
Kap eens met dat eval=evil. Gebruiken jullie wel eens JSON? Hoe denk je dat dat werkt? Eval is pas evil als een programmeerprogrammeur het op een verkeerde manier gebruikt.
edit: het is maandag
edit: het is maandag
Waarvoor gebruik je eval dan?
http://json.org/json_parse.js
@Richard; Aha, blijkbaar help ik altijd de misvatting gehad dat JSON responses ge-eval'ed(?) werden. Mijn excuus, slecht voorbeeld. Ging me puur om een 'simpel' voorbeeld. Ging ik daar even de mist in :$ Wou alleen even punt maken dat eval niet van nature slecht is, maar dat het om het gebruik gaat.
Een beter voorbeeld is dan misschien preg_replace met de 'e' modifier.
En inderdaad: preg_replace met e-modifier is nutteloos en onbetrouwbaar: sinds PHP 5.3 hebben we lambda's in PHP en daarmee is preg_replace_callback in een klap veel makkelijker in het gebruik geworden. Niet dat ik het niet gebruikte: het is ook nog eens sneller. :-)
Ik gebruik momenteel eigenlijk geen eval. Klinkt vreemd, maar ik heb het *echt* niet nodig.