PHP Array an Javascript Funktion übergeben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
antworten
array
code
dank
funktion
http
item
jemand
kanone
konvertieren
manual
objekt
schnelle antwort
spatz
stehen
string
url
variable array
zahl
ziel
-
Hallo zusammen,
ich rufe in meinem Code bei einem onmouseover Event eine Javascript Funktion auf und möchte zwei PHP Variablen und ein PHP Array an die Funktion übergeben. Mit den Variablen mach ich das so:
onmouseover="showInfo('<?php echo name; ?>', '<?php echo $ranks; ?>');"
Aber wie kann ich nun zum Beispiel das PHP Array mit dem Namen $array an die Funktion übergeben? Ich kann da ja nicht einfach "echo $array" hinschreiben.
Ich hoffe mir kann jemand helfen.
Viele Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mach es so:
<?php $array = array("hackyourlife" => 18186, "ultimate-bravery" => 2288); $jsarray = json_encode($array); echo("var x = $jsarray;");
Dann kümmert sich PHP selbst darum das richtig zu konvertieren. Das funktioniert übrigens immer und sorgt dafür, dass egal was in der Variablen auch stehen mag, es jedenfalls richtig zu JavaScript konvertiert wird, also auch bei Strings, Zahlen, Objekten usw. -
hackyourlife schrieb:
Mach es so:<?php $array = array("hackyourlife" => 18186, "ultimate-bravery" => 2288); $jsarray = json_encode($array); echo("var x = $jsarray;");
Dann kümmert sich PHP selbst darum das richtig zu konvertieren. Das funktioniert übrigens immer und sorgt dafür, dass egal was in der Variablen auch stehen mag, es jedenfalls richtig zu JavaScript konvertiert wird, also auch bei Strings, Zahlen, Objekten usw.
Ok danke für die schnelle Antwort. Also ich mache jetzt so den Funktionsaufruf:
onmouseover="showInfo('<?php echo $name; ?>', '<?php echo json_encode($masteries_api->{$id}->description); ?>', '<?php echo $ranks; ?>');"
Das Array kommt aus einer API. So steht es in der API:
"description": [
"+2% Cooldown Reduction and reduces the cooldown of Activated Items by 4%",
"+3.5% Cooldown Reduction and reduces the cooldown of Activated Items by 7%",
"+5% Cooldown Reduction and reduces the cooldown of Activated Items by 10%"
]
So steht es dann allerdings auch im Seitenquellcode, beim Funktionsaufruf:
onmouseover="showInfo('Double-Edged Sword', '["+2% Cooldown Reduction and reduces the cooldown of Activated Items by 4%", "+3.5% Cooldown Reduction and reduces the cooldown of Activated Items by 7%", "+5% Cooldown Reduction and reduces the cooldown of Activated Items by 10%"]', '1');"
Da in der Variable/Array ein Anführungszeichen drin vor kommt, wird das onmouseover Event damit beendet und somit wird meine Seite gerade verbuggt dargestellt. Hast du da eine Lösung für? -
hey :)
das kannst du mit html_entity_decode() machen. http://php.net/manual/en/function.html-entity-decode.php
onmouseover="showInfo('<?php echo $name; ?>', '<?php echo html_entity_decode(json_encode($masteries_api->{$id}->description), ENT_QUOTES); ?>', '<?php echo $ranks; ?>');"
Ich gebe zu html_entity_decode ist etwas mit Kanonen auf Spatzen geschossen, aber es erfüllt deine Ziele auf jeden Fall. Alternativ kann man auch mit str_replace arbeiten. http://php.net/manual/en/function.str-replace.php
Jedoch bin ich mir nicht sicher was du genau machen willst. hackyourlife hat dir eine Möglichkeit gegeben wie du das Array noch in JS als Array interpretieren kannst. Wenn ich mir aber dein Code ansehe vermute ich, dass du das Array als zusammenhengenden Text haben willst, kann das sein?
Das würde man dann nicht mit json_decode machen, sondern mit implode. http://php.net/manual/en/function.implode.php
onmouseover="showInfo('<?php echo $name; ?>', '<?php echo html_entity_decode(implode($masteries_api->{$id}->description), ENT_QUOTES); ?>', '<?php echo $ranks; ?>');"
-
ultimate-bravery schrieb:
Du könntest
Da in der Variable/Array ein Anführungszeichen drin vor kommt, wird das onmouseover Event damit beendet und somit wird meine Seite gerade verbuggt dargestellt. Hast du da eine Lösung für?
mit der Optionhtmlspecialchars()
bemühen:ENT_QUOTES
$js = htmlspecialchars(json_encode($array), ENT_QUOTES); echo("<tag arg="$js" />");
// EDIT
the-8-beta nutzt die falsche Funktion (decodieren statt encodieren), das ist deshalb nicht empfehlenswert. Der Rest mit
,str_replace
o.ä. ist überhaupt nicht empfehlenswert, da du schneller eine Lücke hast (XSS o.ä.), als dir lieb ist.implode()
Beitrag zuletzt geändert: 27.11.2014 22:25:05 von hackyourlife -
Ok danke für eure Antworten. Also ich wollte in der Javascript Funktion dann jeden Wert aus dem Array mit noch bisschen HTML Code dazwischen zu einem String machen. Mir ist dann eingefallen, dass ich das genauso gut in PHP machen kann und dann den String an die Funktion übergeben kann. Danke trotzdem für eure Antworten :)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage