JavaScript と PHP を分離したほうがよいと思います。
したがって、PHP ファイル (または HTML テンプレート) で、スクリプトを設定します。
<script type="text/javascript" charset="utf-8">
function show_details(id, title, content) {
alert(content);
}
</script>
私が気づいたこと:なぜあなたのshow_details
関数には3つのパラメータ(id
、、 )があるのにtitle
、content
以下の初期化関数にはしかないのcontent
ですか?とりあえずとを削除してみて、動作するかどうかを確認してください。id
title
content
次に、PHPは次のようになります。
while ($row = mysql_fetch_array($result)) {
$content = nl2br($row['content']);
echo '<a id="details" onclick="show_details(\'' . $content . '\');"></a>';
}
さて、問題を起こしている新しい行に関しては、このようなことを試しましたか?
JavaScript の追加:
function escapeHtml(unsafe) {
return unsafe
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
PHP:
while ($row = mysql_fetch_array($result)) {
$content = nl2br($row['content']);
echo '<a id="details" onclick="show_details(escapeHtml(\'' . $content .'\'));"></a>';
}
または、この投稿のコメントで示唆されているように、次のようなPHP を使用して試すことhtmlentities
もできます。htmlspecialchars
$content
while ($row = mysql_fetch_array($result)) {
$content = htmlentities( nl2br( $row['content']) );
echo '<a id="details" onclick="show_details(escapeHtml(\'' . $content .'\'));"></a>';
}
これがエンコーディングの問題であるとは確信していませんが、確かに間違っている可能性があります... :)