![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
PHPファイルで定義した変数を引数としてJvaScrptファイルに渡す方法がわかりません。どうしたらいいでしょうか?具体的には、
***.php
<?php
class *** {
public function printhello() {
$i = "Hello World!";
echo $i;
}
public function aXces() {
$title = "***会社";
$link = "***.php";
$palam = $_POST[name]
echo "<a href=\"$link\" onclick=\"hL($palam)\">$title</a>";
}
}
?>
この$palamをJavaScriptのファイルに渡したいんです。
***.js
function hL($palam) {
document.body.innerHTML=document.body.innerHTML.replace(/$palam/g,'<span style=\"background-color : yellow\">$palam</span>');focus();
}
ってやってもなかなかうまくいきません。どうすればいいですか?
No.5ベストアンサー
- 回答日時:
JavaScriptの方でもエラーになっていたのですね。
見落としていました。こちらでどうでしょうか?
function hL($palam) {
var re = eval('/'+$param+'/g');
document.body.innerHTML=document.body.innerHTML.replace(re,'<span style=\"background-color : yellow\">'+$palam+'</span>');
focus();
}
PHPと混同しているようですが、以下の点が異なります。
・PHPには変数に$が必須だが、JavaScriptでは不要
・PHPで"で囲まれた変数は解釈されますが、JavaScriptでは解釈されません。
・PHPは'で囲まれた文字列を.で結合させるが、JavaScriptでは'もしくは"で文字列を囲み+で結合させます。
/で囲まれた箇所は、文字列ではなく正規表現オブジェクトで、ちょっと特殊な処理をしています。
一度、生成したい正規表現オブジェクトを文字列で生成し、eval関数という文字列をJavaScriptのコードとして解釈させることで、最終的な正規表現オブジェクトを生成しています。
以下の例の方が分かり易いかもしれません。
例)
var param = 'abc';
var re_str = '/'+param+'/g'; // '/abc/g'(文字列)
var re = eval(re_str); // /abc/g (正規表現オブジェクト)
'abcdefgabcdefgabcdefg'.replace(re,'<span>'+$param+'</span>'); // <span>abc</span>defg<span>abc</span>defg
PHPはサーバー側の処理で、JavaScriptはクライアント側の処理なので、処理は相容れません。
関数を.jsファイルで定義しているのであれば、PHPの文法などに引きずられず、JavaScriptに注力すればよいかと思います。
No.4
- 回答日時:
> echo "<a href=\"$link\" onclick=\"hL($palam)\">$title</a>";
既に回答がありますが、’(シングルクォーテーション)で囲めば、求めている処理は満たせるかと思います。
ただ入力された値をそのままHTMLに出力するのはよく知られた脆弱性ですので、なるべくやらないように気を付けた方が良いです。
以下のように修正すれば、’(シングルクォーテーション)などを入力されても、問題ありません。
$palam = htmlspecialcharactors($_POST[name])
echo "<a href=\"$link\" onclick=\"hL('$palam')\">$title</a>";
この回答への補足
お返事ありがとうございます。参考にさせていただきました。それでなのですが、PHPからJavaScriptに変数を引数として渡すことは、
document.write(answer);
で成功したことが確認できましたが、
document.body.innerHTML=document.body.innerHTML.replace(/$palam/g,'<span style=\"background-color : yellow\">$palam</span>');
focus();
の部分がうまくいきません。どうしてでしょうか?何かいいアドバイスはありませんか?
No.3
- 回答日時:
>echo "<a href=\"$link\" onclick=\"hL($palam)\">$title</a>";
$palamの前後に'を付けないとJavascriptとしてエラーになります。
あとparamです。
この回答への補足
お返事ありがとうございます。参考にさせていただきました。それでなのですが、PHPからJavaScriptに変数を引数として渡すことは、
document.write(answer);
で成功したことが確認できましたが、
document.body.innerHTML=document.body.innerHTML.replace(/$palam/g,'<span style=\"background-color : yellow\">$palam</span>');
focus();
の部分がうまくいきません。どうしてでしょうか?何かいいアドバイスはありませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- HTML・CSS html cssのmargin 5 2022/12/03 11:04
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Webページ中の javascript をVB...
-
Shell.ApplicationでのIEオブ...
-
フォルダ内のファイル名を取得...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
正整数の半角数字かどうか判定する
-
gas 全角数字を半角数字に変換
-
VBAによる第3、4水準文字の判定...
-
jsでルートディレクトリより上...
-
C#でTextBoxに数値のみ入力可能...
-
VBAの[cellsメソッドは失敗しま...
-
PHPとjavascriptで共通なエンコ...
-
VB.NETからWEBブラウザの操作に...
-
計算結果が毎回違う。
-
デザイン時のVisible=Falseは実...
-
PowerPointで時計表示
-
Excel VBA カタカナ セル判定...
-
1つのVBAコードをすべてのコア...
-
既存のwebサイトで、ローカルの...
-
javascriptで「オブジェクトを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
画面間でのJavaScrip...
-
javaScriptでグローバル変数に...
-
フォルダ内のファイル名を取得...
-
CSSのクラスを動的に変更 classで
-
イベントevt?evt.target:event....
-
タブブラウザで focus() を実...
-
event.srcElementの動的設定
-
エクセル2010のvbaについて
-
jquery か javascript で json ...
-
【javascript】プロパティ?オ...
-
JavaScriptの仕様(ECMA-262以外)
-
PHPで定義した変数を引数として...
-
javascriptでオブジェクトのメ...
-
ASP.NETでURLにマッピングされ...
-
JavaScript 日数計算の関数で演...
-
VBAの引数の指定 カッコとイコ...
-
JavaScriptでオブジェクトを識...
-
jQueryで、listの要素数を取得...
おすすめ情報