2016-04-05 11 views
1

PHPからJavaScriptに文字列を渡そうとしていますが、悲惨に失敗しています。テストから、私のテストを失敗させている空白が見えます。どうすればjavascriptに正しくエンコードするのですか%20を試しましたが、もう少し何も動作しないようです。文字列PHPをJavascript Spacesに渡す

完全なソースを

<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.phpを

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

FOLLOW UP

まだ唯一のスペースを削除すると、この上記の例では、動作するようになりますようで失敗した下のコードを追加します。

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

の可能な複製を[JavaScript変数(と脱出にPHPの文字列を渡しますnewlines)](http://stackoverflow.com/questions/168214/pass-a-php-string-to-a-javascript-variable-and-escape-newlines) –

答えて

2

それはスペースとは何の関係も持っていないです。そしてあなたは完全なコードを私たちに与えていない。 HTMLがエコーの中にあると思いますか?もしそうなら、あなたはこれを実行する必要があります。

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

すなわちそのJavaScriptにあなたのパスjson_encode任意のデータ。また、<script>タグではなく属性にあるため、HTML用にエスケープする必要があります。


また、URLのクエリパラメータをエスケープする必要があります。

私は、エンコーディングの問題を修正するようにコードを修正した:

<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>"; 

また、jQueryのエスケープ処理しましょう:

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

私がフルソースを追加するために上記で修正したおかげでありがとうそれでもコードは失敗します。私が$ message = "hello"(空白はまったくうまくいきません)を私が間違っている他のアイデアにしたら? –

+0

@CliveAtkinsこれは完全なコードではありません。どのようにHTMLを出力していますか?不明な場合は.phpファイル全体を貼り付けてください。 – mpen

+0

@CliveAtkinsああ...大丈夫、あなたはまた、URLパラメータをエスケープする必要があります。あなたは[encodeURIComponent](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent)でJSでそれを行うことができます。私は答えに完全な例を加えました。 – mpen

関連する問題