私はちょうど「正しい」答えも見つけられないという単純な問題です。PHPからJavaScript関数へのアポストロフィを使用した文字列の受け渡し
データベースから人の名前を読み込んでテーブルに表示するPHPスクリプトがあります。各行では、私はタイトルのように、人の名前でポップアップ表示されるJavaScript関数に人の名前をハイパーリンクされている - PHPコードをし、結果のHTMLは次のとおりです。HTMLで
$name = $results['name'];
echo '<a href="javascript:void(0)" onclick="popup(this, '\' . $name . '\')">' . $name . '</a>';
:
<a href="javascript:void(0)" onclick="popup(this, 'Steve Smith')">Steve Smith</a>
「Bryce D'Arnoud」のようなハイフンを持つ名前にヒットした場合を除いて、すべてがうまく動作します。その結果、アポストロフィがHTMLを破ります。 HTMLで
$name = $results['name'];
echo '<a href="javascript:void(0)" onclick="popup(this, '\' . addslashes($name) . '\')">' . $name . '</a>';
:この問題を回避するために、私は次のコードで& htmlの結果、PHP addslashes()
機能を使用しています
<a href="javascript:void(0)" onclick="popup(this, 'Bryce D\'Arnoud')">Bryce D'Arnoud</a>
すべての機能罰金を、いくつかの理由のためには、JavaScript私は名前を警告する場合は、エスケープ文字を削除し、ポップアップで()関数ではありません、私は「ブライスD \ 'Arnoud」を参照してください
function popup(t, name) {
alert(name);
}
任意の提案どこが間違っているのか?
興味深い...しかし、コードが有効なHTMLを生成する方法はありません、ありますか? –
もちろん、 'data-'属性はHTML5の標準的な部分です。 – Eli
ありがとうございます。簡単なonclick呼び出しを行うためにjQueryをロードする必要を避けることを望んでいましたが、この解決策を私の代わりにしておきます。 –