2012-04-21 16 views
0

1つの引数がドロップボックスから取得された変数であるjavascript関数を呼び出そうとしています。このスクリプトは "this.value"を使って現在のドロップボックスから値を渡しただけでうまく動作しますが、変数を渡そうとするとコードが機能しません。 echo文を使用すると、変数は適切にドロップボックスの値から設定されています。私は問題は実際にjavascript関数に変数を渡していると思います。 write文が実行されないので、関数showSection(q、r)は呼び出されません。どんな助けもありがとう。ここに私のPHPとJavaScriptコードですjavascriptにパラメータとしてphp変数を渡します。

echo "<select name=\"course\" onchange=\"showSection($q, this.value)\">"; 
+0

コードの壁は挨拶のその素敵ではありません。 – Joseph

+3

このPHPコードはMySQLに注入されるように嘆願しています。 – Blender

+0

これは質問です。関数に変数を渡すための構文は何ですか、関数に変数を渡そうとするところでは機能しません。これは、格納された変数ではなく、this.valueを使用して1つの変数を渡すときにのみ機能します。 – nofx1129

答えて

0

$ qまたはthis.valueが文字列値の場合は、引用符で渡す必要があります。

echo "<select name='course' onchange='showSection(\"$q\", \"this.value\")'>"; 
0

は、あなたはjavascript構文エラーを生成しません$qの値を挿入することを確認する必要があります。これを行うための合理的な方法は、値にjson_encodeを使用することです。

その後、一重引用符と二重引用符の両方が、その値でエスケープされていることを確認して、正しいhtmlを維持する必要があります。それにはhtmlspecialcharsが使用されます。私の意見では、一重引用符と二重引用符の両方を変換すると常に(ENT_QUOTES)が最適です。

そして、最終的な結果は、(私はそれがより読み見つけるので、私は、ここにヒアドキュメント構文を使用しています)です:

$escaped = htmlspecialchars(json_encode($q), ENT_QUOTES); 
echo <<<HTML 
<select name="course" onchange="showSection($escaped, this.value);"> 
HTML; 
関連する問題