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

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

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

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(); } ってやってもなかなかうまくいきません。どうすればいいですか?

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

  • ベストアンサー
  • 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

  • document.body.innerHTML.replaceでハイライトさせた文字を戻す方法

    document.body.innerHTML=document.body.innerHTML.replace(/検索した文字/g,'<span style=background-color:yellow>検索した文字</span>');focus(); で検索文字を黄色くさせたあと、更新させない限り元に戻りません。これでは、他の文字を検索したときに、前に検索した文字が黄色くなりっぱなしで、不便です。どうしたらよいでしょうか?

  • PHP内にJavaScript

    下記のようなはじめての訪問者に対してようこそ!と表示するJavaScriptをPHP内で動かすにはどのように記入すればよいのでしょうか? ==================================================== <script language="JavaScript"> var key = "freekeyword"; var n = 0; var cookies = document.cookie.split("; "); for(var i=0;i<cookies.length;i++){ var str = cookies[i].split("="); if(str[0] == key){ // n = str[1]; } } window.onload = function() { if(n == 0){ document.getElementById('welcome').innerHTML = 'ようこそ!'; } n++; setCookie(key,n); } function setCookie(key,val){ document.cookie = key + "=" + escape(val) + "; "; } </script> ==================================================== このスクプリトを下記<head>内にどのように記入すればよいので しょうか? PHPの文法などほとんど分からないレベルなのでそもそも質問 自体間違ってるかもしれませんがPHP内で同様の動作をさせたい のです。よろしくお願いします ==================================================== <?php echo ' <html> <head> </head>'; echo ' <body> <div id="welcome"></div> </body></html>'; ?> ====================================================

    • ベストアンサー
    • PHP
  • 特定文字列を消したい

    「あ」で始まり「お」で終わる文字列を消したいのです 外部ファイルにしています 以下のように記述しましたが出来ませんでした html内のhead内に記述したもの <script type="text/javascript" src="test.js"></script> 外部ファイルの中身 function kakikae() { document.body.innerHTML = document.body.innerHTML.replace (/^あ*お$/g,'');focus(); }

  • phpで動的タイトル

    phpで動的タイトルを作りたいのですが$page_titleが 表示できません。 body.phpに<html>~<body>を書きindex.phpに読み込み表示させ index.phpに$page_titleがあればタイトルに表示させるように したく下記のようにしてみましたが表示されませんでした。 試しにindex.phpの$page_titleを消すとタイトルの文字のみが 出力されるので値があるかについては大丈夫かと思うのですが どのようにすれば表示されるのでしょうか? ---body.php--- if($page_titel) { echo "<title>タイトル - ".$page_title."</title>\n"; } else { echo "<title>タイトル</title>\n"; } ---index.php--- $page_titel = "ページタイトル"; require_once "body.php";

    • ベストアンサー
    • PHP
  • javascriptの変数をPHPの変数で受ける

    下記のようなjavascript において、グローバル変数clicked の値を PHPの変数$clickedで受けたいのですが、どうすれば受け取れるでしょうか? var_dump()してみると、undefinedや、NULLと表示されます。 要は、カレンダーの<td>要素をクリックしたときの日にちの番号を PHPの変数で受けたいのです。 echo '<tr id="calheader" bgcolor="#ffffcc">'; for($i=1; $i<=7; $i++){ echo '<td valign="top" align="center" class="smallText" id="'.$i.'" onclick="pusharea(this);">'.$i.'</td>'; <script language="javascript"> <!-- var clicked; // グローバル変数 function pusharea(obj){ clicked = obj.id; } // --> </script> </head> ----------------------------------------------- <script language="javascript"> alert(clicked); // <?php echo $clicked;?>=clicked; </script> <?php var_dump($clicked); echo '<tr>'; for($i=1; $i<=7; $i++){ /*if($i===$clicked)*/ echo '<td valign="top" height="50" align="center" class="smallText">'.$user.'</td>'; //else echo '<td valign="top" class="smallText">&nbsp;</td>'; } echo '</tr>';

  • PHP上でのJavaScript記述について

    PHP上でのJavaScript記述についての質問です。 http://iswebmag.hp.infoseek.co.jp/sample181.html ↑のようなものをPHP上で作成したいと思っています。 そこで、似たようなものを作成してみたのですが、 どうにもうまく動きませんでした。 そこで、試しに上記サイトのサンプルを全てechoで出力するコードを書いてみたの ですが、 それでも動きませんでした。 このスクリプトはPHP上では動作しないのでしょうか? PHPに詳しい方、どうかご教授お願いします。 ソースは以下になります。 --------------------------------------------------------- <HTML> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <HEAD> <TITLE>魅せるホームページ作成講座</TITLE> </HEAD> <BODY> <?php echo '<FORM name="f1">'; echo '<INPUT type="radio" name="cate" onClick="Infoseek()">各種情報 <BR>'; echo '<INPUT type="radio" name="cate" onClick="Rakuten()">買い物<BR>'; echo '<SELECT name="links">'; echo '<OPTION>ラジオボタンを選択</OPTION>'; echo '</SELECT>'; echo '<INPUT type="button" value="リンク先を表示" onClick="goLink()">'; echo '</FORM>'; echo '<SCRIPT language="JavaScript">'; echo '<!--'; echo 'function Infoseek(){'; echo 'document.f1.links.length=4;'; echo 'document.f1.links.options[0].text="Infoseek検索";'; echo 'document.f1.links.options[1].text="Infoseekニュース";'; echo 'document.f1.links.options[2].text="Infoseek天気";'; echo 'document.f1.links.options[3].text="InfoseekTV番組表";'; echo 'document.f1.links.options[0].value="http://www.infoseek.co.jp/";'; echo 'document.f1.links.options[1].value="http://news.www.infoseek.co.jp/";'; echo 'document.f1.links.options[2].value="http://tenki.www.infoseek.co.jp/";'; echo 'document.f1.links.options[3].value="http://tv.www.infoseek.co.jp/";'; echo '}'; echo 'function Rakuten(){'; echo 'document.f1.links.length=3;'; echo 'document.f1.links.options[0].text="楽天";'; echo 'document.f1.links.options[1].text="楽天フリマ";'; echo 'document.f1.links.options[2].text="楽天ブックス";'; echo 'document.f1.links.options[0].value="http://www.rakuten.co.jp/";'; echo 'document.f1.links.options[1].value="http://furima.rakuten.co.jp/";'; echo 'document.f1.links.options[2].value="http://books.rakuten.co.jp/";'; echo '}'; echo 'function goLink(){'; echo 'imax=document.f1.links.length-1;'; echo 'for (i=0 ; i<=imax ; i++){'; echo 'if (document.f1.links.selectedIndex==i){'; echo 'window.open(document.f1.links.options[i].value);'; echo '}'; echo '}'; echo '}'; echo '// -->'; echo '</SCRIPT>'; ?> </BODY> </HTML> ---------------------------------------------------------

    • ベストアンサー
    • PHP
  • php 関数が定義されていない???

    いつも大変お世話になり誠にありがとうございます。 標記の件。 エラーメッセージは Fatal error: Uncaught Error: Call to undefined function getBlog() in C:\xampp\htdocs\detail.php:3 Stack trace: #0 {main} thrown in C:\xampp\htdocs\detail.php on line 3 です。 別のファイルで function getBlog($id) { if(empty($id)) { exit('idが不正です。'); と、getBlogという関数を使っています。 それを利用した、と言っています。 何故、3行目がエラーでしょうか? 度々申し訳ございません。 アドバイスの程、宜しくお願い申し上げます。      記 <?php require_once('dbc.php'); $result = getBlog($_GET['id']); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ブログ詳細</title> </head> <body> <h2>ブログ詳細</h2> <h3>タイトル:<?php echo $result['title'] ?> </h3> <p>投稿日時:<?php echo $result['post_at'] ?></p> <p>カテゴリー:<?php echo setCategoryName($result['category']) ?></p> <hr> <p>本文:<?php echo $result['content'] ?></p> </body> </html>

    • ベストアンサー
    • PHP
  • mixiアプリでjavascriptで取得した変数をPHP変数にするに

    mixiアプリでjavascriptで取得した変数をPHP変数にするには? いつもお世話になっております。 mixiアプリで利用者のIDを取得する方法は、 document.getElementById("id").innerHTML = id; で行うことができたのですが、これはHTML内に、   <span id="id"></span> と記載した場合のみIDが表示されるようになっています。 これをPHPの変数(例:$id)などとして扱うことはできないでしょうか? 任意の場所に<?php echo $id; ?>と書けばIDが表示される仕組みにしたいと考えています。 (最終目的としてはinputのvalueにmixiIDを代入し、次ページへ変数を渡せたいのです) <input type="hidden" name="id" value="◆◆"> ◆◆の部分にIDを代入させたいです 以上よろしくお願いいたします。

  • Javascript 関数内でのPHP関数

    PHPとMySQLを使い、機械部品の管理を行うプログラムを作成中です。 以下に添付しましたようなPHPファイルの中で、Javascriptを使って<input> の中に入力したパーツ番号からOKボタンを押してその詳細説明(英文)を description: の横の<span> に取得しようとしています。 実行結果を見ると、PHP関数 getDescription( ) そのものは機能しているようですが、Javascript 関数 GetDesc( ) の中で使うと機能しません。 色々試してみましたが上手く行きませんでした。 PHPソースコードと実行した画面のスクリーンショットを添付してありますが、何をどうすれば思った通りにできるのか、どなたかお知恵を貸していただけないでしょうか。よろしくお願いいたします。 ちなみに、databaseConnection.php はデータベースに接続するだけのもので、そこでの接続リソース変数 $connection をglobal 変数として以下のファイルで使っています。 添付ファイル <! DOCTYPE HTML> <html> <head> <?php require_once "databaseConnection.php"; global $connection; function getDescription($pn){ global $connection; $query = "SELECT * FROM partsmaster WHERE partNumber='".$pn."'"; $result = mysqli_query($connection, $query) or die("cannot get query in search()"); $row = mysqli_fetch_assoc($result); return $row["description"]; } ?> <script> function getDesc(){ var PN = document.getElementById("PN").value; PN = "'"+ PN +"'"; document.getElementById("DSC").innerHTML = "<?php $pn = '" + PN + "'; echo getDescription($pn); ?>"; } </script> </head> <body> input part number:<input type="text" id="PN"> <button onclick="getDesc()">OK</button></br></br> description:<span id="DSC"></span></br> <?php $pn = "591-011-10"; echo "=============================</br>"; echo getDescription($pn); ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHPについて

    PHPについて。 現在このような形でパスワードを作っております <html> <head> <title>form</title> </head> <body> パスワードを入力してください。 <form name="form" action="./sample04.php" method="POST"> <input name="pass" type="text"> <input type="submit" value="ログイン"> </form> </body> </html> ↑HTMLの文面↑ <?php // パスワードを設定する。 $pass = 1234; // form.htmlからのパスワードを受け取る $form_pass = $_REQUEST["pass"]; ?> <html> <head> <title></title> </head> <body> <?php // form.htmlからの値が$form_passと等しいか評価する if($form_pass == $pass){ echo "ログイン成功<br>", "<a href=\"./top.html\">進む</a>"; }else{ echo "ログイン失敗<br>", "<a href=\"./index.html\">戻る</a>";} ?> </body> </html> 質問はパスワードを複数作りたいのですが・・・ どうすればいいですか?PHPにはあまり詳しくないので・・・

    • 締切済み
    • PHP

専門家に質問してみよう