2012-04-03 18 views
1

因此,問題來了。我有一個MySQL數據庫中的數據作爲文本。數據通過mysql_real_escape_string插入。我對正在顯示給用戶的數據沒有任何問題。無法將MySQL中的文本傳遞給使用PHP的Javascript函數

在某些時候,我想將這些數據傳遞給一個名爲foo的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函數,同時保留換行符和回車符但不破壞代碼?

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

After使用JSON這樣的:

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

據輸出HTML這樣的:

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

顯示所述圖像,隨後\ r \ n第2 「);」>

+1

一個解決辦法是使用[json_encode(http://php.net/manual/en/function。 JSON-encode.php)。 [更多信息](http://stackoverflow.com/questions/168214/pass-a-php-string-to-a-javascript-variable-including-escaping-newlines) – 2012-04-03 22:46:47

+1

重複的http://stackoverflow.com/問題/ 168214/pass-a-php-string-to-a-javascript-variable-including-escaping -newlines – Basti 2012-04-03 22:47:16

+0

你想讓這些值在一行中嗎? – Starx 2012-04-03 23:36:58

回答

2

json_encode()是要走的路:

$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)\">"; 

這裏你可以看到一個演示:http://codepad.org/TK45YErZ

+0

我在使用json之後更新了這個問題。對發生問題的任何建議? – Nate 2012-04-03 23:22:02

+0

用你可能丟失的位更新 - 引號內的引號需要被html轉義。 – Cal 2012-04-03 23:25:43

+0

這就是我需要的Cal。非常感謝你。只要我有15的聲望,我會投票。再次感謝! – Nate 2012-04-03 23:34:08

0

我F I我不解釋你不好可能做到這一點:

// 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

這將刪除任何類型的新行,並有效地改變'$ someText'。 – Basti 2012-04-03 22:49:20

0

你會救自己通過將JavaScript從HTML中拉出來導致很多令人頭痛的問題:

<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_encode()足以逃避新行

echo "<img src=someimage.gif onclick=\"foo(".json_encode($newData).")\">"; 
相關問題