2016-04-05 3 views
1

Ich versuche, eine Zeichenfolge in ein Javascript von PHP übergeben, aber kläglich scheitern. Vom Testen kann ich sehen, dass der Leerraum meinen Test zum Scheitern bringt. Wie kann ich kodieren, um richtig an Javascript zu übergeben Ich probierte% 20 und ein paar mehr scheint nichts zu funktionieren.String PHP an Javascript Spaces übergeben

Vollständige Quelle

<script async src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script type="text/javascript"> 

function DemoOne(text) { 
$('#PageView').load('test.php?text=' + text); 
} 
</script> 


<?php 
$message="hello"; 

echo " <a href=\"javascript:DemoOne('$message');\" ><input class='btn' type='button' value='Test'></a>  
<div id='PageView'></div>"; 

?> 

Test Output test.php

<?php 
echo $_GET['text']; 
?>  

VORGEHEN

den Code hinzufügen unten noch nicht nur das Entfernen Räume ermöglicht dies scheint obigen Beispiel zu arbeiten.

a href=\"javascript:DemoOne(".htmlspecialchars(json_encode($message)).");\" ><input type='button' value='Submit'></a> 
<div id='PageView'></div> 
+1

Mögliches Duplikat [zu einem JavaScript-Variable ein PHP-String übergeben (und Flucht Zeilenumbrüche)] (http://stackoverflow.com/questions/168214/pass-a-php-string-to-a-javascript-variable-and-escape-newlines) –

Antwort

2

Es ist nichts mit Leerzeichen zu tun. Und Sie haben uns nicht den vollständigen Code gegeben. Ich vermute, dass HTML in einem Echo ist? Wenn ja, müssen Sie dies tun:

echo "<a href=\"javascript:DemoOne(".htmlspecialchars(json_encode($message)).");\" ><input type='button' value='Submit'></a> 
<div id='PageView'></div>"; 

heißt json_encode alle Daten, die Ihren Pass zu JavaScript. Sie müssen es auch für HTML ausschließen, da es in einem Attribut im Gegensatz zu einem <script>-Tag ist.


Sie müssen auch den Abfrageparameter für die URL umgehen.

geändert ich Ihren Code, um die Codierung Probleme zu beheben:

<script async src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script type="text/javascript"> 

function DemoOne(text) { 
$('#PageView').load('test.php?text=' + encodeURIComponent(text)); 
} 
</script> 


<?php 
$message="hello"; 

echo " <a href=\"javascript:DemoOne(".htmlspecialchars(json_encode($message)).");\" ><input class='btn' type='button' value='Test'></a>  
<div id='PageView'></div>"; 

Alternativ lassen jQuery das entweichende tun:

function DemoOne(text) { 
$('#PageView').load('test.php', {text:text}); 
} 
+0

Danke für die Hilfe, die ich oben geändert habe, um vollständige Quelle hinzuzufügen Code versagt es jedoch immer noch. Wenn ich die $ Nachricht = "Hallo" mache (keine Leerzeichen werden gut funktionieren) irgendwelche anderen Ideen, wo ich falsch liege? –

+0

@CliveAtkins Das ist nicht der vollständige Code. Wie gibst du das HTML aus? Fügen Sie die gesamte .php-Datei ein, wenn Sie sich nicht sicher sind. – mpen

+0

@CliveAtkins Ah ... okay, Sie müssen auch die URL param entkommen. Sie können das in JS mit [encodeURIComponent] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) tun. Ich habe meiner Antwort ein vollständiges Beispiel hinzugefügt. – mpen