php variabele in javascript functie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Om een menu dinamisch te maken wilde ik het wolgende doen:

PHP:
1
2
3
$rechterMuisknop = "<a href=\'javascript:controleSelectie(\'wijzig.php\')\'>$formGebruiker_btnWijzigDoorlaatlijstAdres_Caption</a><br>";

echo "<div id=\"Domein\" class=\"domeinLijst\" onmousedown=\"toonRechterMenu(this,'$rechterMuisknop')\">";


en dan in de functie toonRechterMenu
JavaScript:
1
2
3
4
function toonRechterMenu(div,inhoudMenu)
{
  document.getElementById("rechterMenuAll").innerHTML = inhoudMenu;
}


Dit werkt allemaal, alleen het probleem is de inhoud van de php-variabele $rechterMuisknop. Hij roept de javascript-functie niet aan.

De variabele $rechterMuisknop moet php zijn, omdat er variabele uit een taal-file moeten worden gehaald.

als ik er het volgende van maak
PHP:
1
$rechterMuisknop = "<a href=\'test.php\'>$formGebruiker_btnWijzigDoorlaatlijstAdres_Caption</a><br>";


Dan gaat hij gewoon naar de pagina test.php als ik op de link klik.

Het probleem is dus de js-functie aanroepen in de link, zit hem in de quotes denk ik.

iemand een idee

[ Voor 5% gewijzigd door Verwijderd op 26-01-2007 09:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

<a href=\'javascript:controleSelectie(\'wijzig.php\')\'>

Zal dit worden:

<a href='javascript:controleSelectie('wijzig.php')'>

Wat dit moet zijn:

<a href="javascript:controleSelectie('wijzig.php')">

Probeer dat eerst maar eens op te lossen.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Ja, het ligt aan de quotes. Wat je goed moet beseffen is het verschil tussen serverside en client side. php heeft helemaal niks te maken met of hij nu html of javascript aan het afdrukken is. Wat je het beste kunt doen om dit probleem op te lossen is in de gegenereerde html kijken wat er neit aan klopt. Zeer waarschijnlijk zie je daar dat er wat quotes te weinig zijn en dat je ze nog extra moet escapen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat klopt, dat moet het worden,

alleen kom ik dan weer in de problemen bij:
PHP:
1
echo "<div id=\"Domein\" class=\"domeinLijst\" onmousedown=\"toonRechterMenu(this,'$rechterMuisknop')\">";


als ik dit verander in:

PHP:
1
echo "<div id=\"Domein\" class=\"domeinLijst\" onmousedown=\"toonRechterMenu(this,\"$rechterMuisknop\")\">";


Wil het ook niet werken, maar ga het weer even proberen

Acties:
  • 0 Henk 'm!

Verwijderd

Probeer zo eens te werken.

PHP:
1
echo '<div id="Domein" class="domeinLijst" onmousedown="toonRechterMenu(this,\''.$rechterMuisknop.'\')">';

Dat heeft iig mijn voorkeur.

note: het is [\][']['] en niet [\]["] in mijn voorbeeld. (edit: kun je toch wel goed zien in het codeblock).

[ Voor 9% gewijzigd door Verwijderd op 26-01-2007 10:00 ]


Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

PHP hoort in Programming

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat heb ik nu toegepast, alleen ik denk als volgt:

om het volgende te krijgen:

<a href="javascript:controleSelectie('wijzig.php')">

moet de variabele $rechterMuisknop worden aangeroepen tussen dubbele quotes.
Dus dan krijg je:

PHP:
1
echo '<div id="Domein" class="domeinLijst" onmousedown="toonRechterMenu(this,\"'.$rechterMuisknop.'\")">';


alleen dat vind hij dus al niet leuk. Klopt het dat de variabele $rechterMuisknop aangeroepen moet worden tussen dubbele quotes?

[ Voor 10% gewijzigd door Verwijderd op 26-01-2007 10:11 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu:

PHP:
1
2
3
$rechterMuisknop = '<a href=\\\'test.php\\\'>'.$formGebruiker_btnWijzigDoorlaatlijstAdres_Caption.'</a><br>';

echo '<div id="Domein" class="domeinLijst" onmousedown="toonRechterMenu(this,\''.$rechterMuisknop.'\')">';


Nu nog "test.php" ipv 'test.php', maar het lukt me niet om die dubbele quotes erin te krijgen, ga weer verder proberen.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ten eerste dien je te escapen binnen een javascript string, en als je het ook nog eens in een HTML-attribuut gebruikt zal je ook moeten HTML-encoden...

Iets als dit zou moeten werken:
PHP:
1
htmlspecialchars(addcslashes($string, "\0\n\r\t\\'/"));

vooropgesteld dat je single quotes gebruikt voor strings in JS.

[ Voor 37% gewijzigd door crisp op 26-01-2007 10:25 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op vrijdag 26 januari 2007 @ 10:10:
alleen dat vind hij dus al niet leuk. Klopt het dat de variabele $rechterMuisknop aangeroepen moet worden tussen dubbele quotes?
Nee, dat klopt voor geen meter. Variabelen hoeven helemaal niet tussen quotes te staan; sterker nog, de meeste veel mensen vinden iets als het volgende behoorlijk ranzig:
PHP:
1
2
3
4
5
$titel = "heer";
$voornaam = "Bill";
$achternaam = "Gates";

$string = "Geachte $titel $voornaam $achternaam,";

Vaak ziet men liever dit:
PHP:
1
2
3
4
5
$titel = "heer";
$voornaam = "Bill";
$achternaam = "Gates";

$string = "Geachte ".$titel." ".$voornaam." ".$achternaam.",";

Of je dan single of double quotes gebruikt maakt dan niet uit; in de eerste variant wel.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
$rechterMuisknop = '<a href="javascript:controleSelectie(\'wijzig.php\')">'.$formGebruiker_btnWijzigDoorlaatlijstAdres_Caption.'</a><br>';
  $rechterMuisknop = htmlspecialchars(addcslashes($rechterMuisknop, "\0\n\r\t\\'/"));


Dit werkt. Super bedankt in ieder geval, en ga nu eerst even meer info over die functie zoeken, en kijken hoe het precies in elkaar zit.

Super
Pagina: 1