2012-04-03 3 views
1

ここに問題があります。私はテキストとしてMySQL DBのデータを持っています。データはmysql_real_escape_string経由で挿入されます。私はユーザーに表示されているデータに問題はありません。私はfooというjavascript関数にこのデータを渡したいいくつかの時点でPHPを使用してMySQLからJavascript関数にテキストを渡すのに問題があります

// This is a PHP block of code 
// $someText is text retrieved from the database 

echo "<img src=someimage.gif onclick=\"foo('{$someText}')\">"; 

$ someText内のデータが好き、それに改行がある場合:

Line 1 
Line 2 
Line 3 

javascriptの休憩html出力が

<img src=someimage.gif onclick="foo('line1 
line2 
line3')"> 

あるので、そこで問題は、どのようにすることができ、あります$ someTextをjavascript foo関数に渡して、改行や改行を保存しながらコードを壊さないようにします。

============================================== =============================================

後このようにJSONを使用した:

echo "<img src=someimage.gif onclick=\"foo($newData)\">"; 

それは、このようにHTMLを出力している:

onclick="foo("line 1<br \/>\r\nline 2");"> 

\ rを\ n行2に続いて画像を表示する ");">

+1

一つの解決策をエスケープするのに十分です。 json-encode.php)。 [詳細情報](http://stackoverflow.com/questions/168214/pass-a-php-string-to-a-javascript-variable-including-escaping-newlines) –

+1

重複のhttp://stackoverflow.com/質問/ 168214/pass-a-php-string-to-a-javascript-variable-escaping-newlines – Basti

+0

値を1行にしたいですか? – Starx

答えて

2

json_encode()は、移動するための方法でありますHTMLからJavaScriptを抜き取って頭痛に冒されます。

<img id="myImage" src="someimage.gif"/> 
<script type="text/javascript"> 
    var str = <?php echo json_encode($json); ?>; 
    document.getElementById('myImage').addEventListener(
     'click', 
     function() { 
      foo(str); 
     } 
    ); 
</script> 

事のsimiler ...

+0

jsonを使って質問を更新しました。発生している問題に対する提案はありますか? – Nate

+0

おそらく見つからないビットで更新されます。引用符内の引用符は、HTMLでもエスケープする必要があります。 – Cal

+0

それは私がカルを必要としたものでした。どうもありがとうございました。私が15の評判を得たらすぐに私はこれを投票します。再度、感謝します! – Nate

0

私はF私はひどく解釈ではないよ、あなたはこれを行うことがあります。http://codepad.org/TK45YErZ

+0

これはどんな種類の新しい行を削除し、効果的に '$ someText'を変更します。 – Basti

0

あなたは自分を救う:あなたはここでデモを見ることができます

$json = json_encode($someText); # this creates valid JS 
$safe = HtmlSpecialChars($json); # this allows it to be used in an HTML attribute 
echo "<img src=someimage.gif onclick=\"foo($safe)\">"; 

// This is a PHP block of code 
// $someText is text retrieved from the database 

echo "<img src=someimage.gif onclick=\"foo('{".trim(preg_replace('/\s+/', ' ',$someText))."}')\">"; 
0

のみjson_encode()はhttp://php.net/manual/en/function([json_encode]を使用することであろう新しい行に

echo "<img src=someimage.gif onclick=\"foo(".json_encode($newData).")\">"; 
関連する問題