• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPで定義した変数を引数としてJvaScrptに渡す方法)

PHPで定義した変数を引数としてJavaScriptに渡す方法

このQ&Aのポイント
  • PHPファイルで定義した変数を引数としてJavaScriptファイルに渡す方法について教えてください。
  • 具体的には、PHPファイルで定義した$palam変数をJavaScriptのファイルに渡したいです。
  • 現在のコードではうまく動作しません。どのように修正すれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • cgetc502
  • ベストアンサー率100% (1/1)
回答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に注力すればよいかと思います。

masaki85
質問者

お礼

ありがとうございます。おかげで解決しました。これからもよろしくお願いします。

その他の回答 (4)

  • cgetc502
  • ベストアンサー率100% (1/1)
回答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>";

masaki85
質問者

補足

お返事ありがとうございます。参考にさせていただきました。それでなのですが、PHPからJavaScriptに変数を引数として渡すことは、 document.write(answer); で成功したことが確認できましたが、 document.body.innerHTML=document.body.innerHTML.replace(/$palam/g,'<span style=\"background-color : yellow\">$palam</span>'); focus(); の部分がうまくいきません。どうしてでしょうか?何かいいアドバイスはありませんか?

  • mdp36
  • ベストアンサー率72% (26/36)
回答No.3

>echo "<a href=\"$link\" onclick=\"hL($palam)\">$title</a>"; $palamの前後に'を付けないとJavascriptとしてエラーになります。 あとparamです。

masaki85
質問者

補足

お返事ありがとうございます。参考にさせていただきました。それでなのですが、PHPからJavaScriptに変数を引数として渡すことは、 document.write(answer); で成功したことが確認できましたが、 document.body.innerHTML=document.body.innerHTML.replace(/$palam/g,'<span style=\"background-color : yellow\">$palam</span>'); focus(); の部分がうまくいきません。どうしてでしょうか?何かいいアドバイスはありませんか?

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

やりたい事がよくわかりません。 そのPHPを呼び出す(POST元)のHTMLソースと、 PHPに出力させたいHTMLソースを提示してみてください。

masaki85
質問者

お礼

お返事ありがとうございます。参考にさせていただきました。

  • koke29
  • ベストアンサー率58% (114/196)
回答No.1

javascriptの方には$付けなくてよのではー

masaki85
質問者

お礼

お返事ありがとうございます。参考にさせていただきました。

関連するQ&A

専門家に質問してみよう