• 締切済み

Javascript+PHPで変数を受け渡したい

PHP変数の文字列データを、 <a href ="Javascript:xxx($data)">として、関数を実行させたときに、関数側での function xxx(data){ --データで指定されたhtmlへ移動したい } という方法は、実現できないのでしょうか。 Javascriptのエラーでデータの受け渡しができていないみたいなのですが、わかる方教えてください。

みんなの回答

  • NTJ
  • ベストアンサー率44% (46/103)
回答No.3

多分、#1さん、#2さんの「回答」で正解なのですが、 質問者さんが少し混乱している風情がありますので補足しますね。 JavaScriptエラーはブラウザ内で発生しているエラーなので、PHP側の変数には問題はありません。 問題は、展開されたHTMLソースの「状況」にあります。 この問題の場合、仮にPHPの変数$data の内容が "aaaa" という文字列だったとします。 すると、<a href ="Javascript:xxx($data)"> という記述は展開されて、 <a href ="Javascript:xxx(aaaa)"> というHTMLソースが出力されます。 それを受け取ったブラウザ側でJavaScriptを実行させると、 関数を xxx(aaaa) としてコールしていますので、 JavaScriptは、aaaa というHTML内の変数を探し、該当するものが無いのでエラーとなっています。 従って、 > aaaa is not defined. 変数 aaaa は定義されてませんよ! というエラーになるわけです。 さて、目的は、関数 xxx() へ "aaaa" という文字列を引き渡してやりたい訳なので、HTMLソース内で <a href ="Javascript:xxx('aaaa')"> という形へ展開されるようにPHPを組む必要がありますので、 皆さんが回答しているように <a href ="Javascript:xxx('$data')"> してやるだけで、問題は解決すると思われます。 ちなみに $data の内容が "1" だった場合には、JavaScript は 1 を変数ではなく数値と判断しますので、結果的に正常に 1.html へ遷移する筈です。 また、"02" だった場合には同様の処理の結果、2.html へ遷移してしまう結果になります。 また、偶然に変数 aaaa が定義されていて、仮に "himitu" という文字列が定義されていた場合には、himitu.html へ遷移してしまう結果になります。 JavaScriptは、型変換に関しては、非常に「強力な」処理系です。 利用される場合には、JavaScript内でどのような変換が行われてゆくか、詳細に推定しておく必要があります。

noname#24096
noname#24096
回答No.2

$dataは、PHPの変数ってことですかね? 試してませんが <a href ="Javascript:xxx(<?=$data?>)"> じゃないですか? $dataが""(空)だった場合も考えると もう少し修正して <a href ="Javascript:xxx('<?=$data?>')"> がいいかも… もちろんJavascriptのxxx関数で""(空)が 渡された場合の処理を記述する必要がありますが。

  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.1

出力したhtmlソースを確認してください $data が例えば a.html だとすると <a href ="Javascript:xxx(a.html)"> となっていないでしょうか javascript のほうで引数として文字列を渡したいならば、 xxx('a.html') となるように変更が必要でしょう また、エラー文、省略されている関数内のスクリプト、htmlソース等 回答を求めるための内容が不足しすぎです 私も見当違いの回答をしているかもしれませんので、 解決なさらない場合は全て補足するのが良いと思いますよ

ssta06
質問者

補足

申し訳ありません。拙い文章でした。 まず、javascriptの関数は function xxx(data){ if(confirm(data + ":このページへとびます")){ window.open(data + ".html","_self"); } } です、ただ確認メッセージを出して、そのページに飛ばせるようにしています。 HTMLソースではPHP部でデータベースと接続し、レコードより得た文字列データが$dataに入っており、 <a href="javascript:xxx($data)">リンク</a>としています。 リンクをクリックすると何もおきず、 エラー文は, $dataの内容 is not defined.とでています。

関連するQ&A

  • javascript変数をPHP変数に渡し,またjavascript変数に渡すには?

    javascriptの変数を、PHP記述のPHP変数に渡し、 またjavascript変数に渡したいのですが、 何か良い方法はありますか? つまり、javascriptに無さそうな関数なので、 PHPで用意されている関数(mb_convert_encoding) を使い、またjavascriptの変数に戻してやりたいのです。 ご存知の方がいましたら、ご教授下さいませ。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • JavaScriptにPHPの変数

    どちらで質問しようか迷いましたけど^^; PHPでの変数をJavaScriptに移動(?)できないのでしょうか? $abs = 30; setTimeout("location.href='abc.php?var=<? echo $abc;?>'",1000*40); このような形で移したいのですが、これはできないのでしょうか?

    • ベストアンサー
    • PHP
  • php→JavaScript間の変数受け渡し

    phpで文字列を入れた変数をJS側に渡して、アラートで表示させるために、下記のソースを作成しました。ボタンを押したらアラートが出ると想定して作成しました。 ※フレームワークにcakePHPを使用しています。 ------------------------------------------------------------------------ <?php $aaa = 'abc'; echo '<input type="button" onClick="xxx()">'; ?> function xxx() {  var bbb = <?php echo $aaa ?>;  alert(bbb); } ------------------------------------------------------------------------ しかし、上記の記述では正常にアラートが表示されません。 そこでいろいろ試してみた結果、 「$aaa = 'abc';」ではなく、 「$aaa = '111';」や「$aaa = 111;」だと正常にアラートが表示されました。 このことから、数字や数値だとうまくいくことがわかりましたが、今回は文字列の受け渡しを行ないたいと考えています。 何かご存知の方がいらっしゃいましたら、アドバイスを頂けると幸いです。 備考 当たり前なのかもしれませんが、 「var bbb = <?php echo $aaa ?>;」ではなく 「var bbb = 'abc';」とjs側で文字列を直接入力すると、アラートは正常に表示されました。 変数で文字列を渡す方法がわからず、半日ほど時間を使ってしまいました。 本当によろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP + javascriptで

    ラジオボタンで1から15個までの不定なデータを選択式にしています。 不定なデータはPHPの変数で配列$data[0]~$data[15]です。 そのデータを選択して、<a href = "javascript:関数">で  Javascriptの関数にデータを渡して、そのデータを次のページへ 渡すことはできるでしょうか。 不確定なデータは1個で終わる場合もあり、最大15個という意味です。

    • ベストアンサー
    • PHP
  • PHPの処理結果をjavascriptで利用する方法

    既に似たような質問も出ていそうで恐縮ですが(一通り目を通したですが、目的とするものは見つけられませんでした)、 PHPとjavascriptのやりとりについて教えていただければ幸いです。 データをフォームなどから受け取る→サーバー側(php)で処理→ 処理した結果の変数をjavascript用の変数として扱うといったこと がしたいのですが、うまくできません。 実際には以下のような形で書いて失敗してしまいました。。。 /*xxx.php*/ <html> <head> <?php $result = $_POST["sentence"]; ?> <script language="javascript"> result = "<?=$result?>"; </script> <script src="xxx.js" type="text/javascript"language="javascript"></script> </head> <body> <form id="sample"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> </body> </html> /*xxx.js*/ /*xxx.js*/ window.onload = function(){ document.getElementById("sample").onsubmit = function() { var req = createHttpRequest(); req.onreadystatechange = function(){ if(req.readyState==4 && req.status == 200){ alert(result); //PHPの結果を待った後を想定した何らかの処理      //ここでresultを使いたいが、サーバー側への送信前      //の値が入っているだけでonsubmitが反映されていない。 } } req.open("POST","./xxx.php",false); //<-formでくくられた<input type="text">等の部分は反映されない。 req.send(""); } } function createHttpRequest(){ if(window.XMLHttpRequest){ return new XMLHttpRequest(); } else if(window.ActiveObject){ try{ return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { return null; } } } } 私なりに調べたところ 1.PHPとjavascriptは別の所で動作しているので受け渡しは基本不可能 2.PHP側で動的に書き出すことで見せかけることはできる。 var test = <?=$test?>等 3.XmlHttpRequestでphpの処理を結果を待って、変数を利用しようと思ったが、 <form id="form"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> といった場合に$_POST["sentence"]に値を入れる方法が不明。 また、 multipart/form-dataによる送信など方法が複雑。 responseTextには<html>から</html>まで格納されてしまった。 処理項目ごとに表示用に別にPHPファイル作成だと困る。 4.<form action = "xxx.php" onsubmit=関数名>とすると、 onsubmitで指定した関数が先に呼び出されてから、 xxx.phpの実行が行われるので、サーバー処理を待たずに javascript側が実行されてしまう。 といったことだけは分かりました。 しかし、どのように変更すればうまくいく(もしくは見せかける) ようになるのかがさっぱり分からなかったため、 質問させていただきました。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPの変数をJavaScriptに渡したい

    PHPの中にJavaScritの確認ダイアログを表示しています。 PHPの変数をJavaScript内でも使いたいのですが、どのようにすればよいのでしょうか? <?php $number=$_POST["number"]; if(isset($_POST["delete"])) { //選択したデータの削除 //削除の確認 print("<script language='JavaScript'>"); print("res=confirm('削除してもよいですか');"); print("if(res==false) location.href='delete.php?number=$number';"); print("</script>"); ?> また、<?php  ?>内でJavaScriptを使っているのでprint文でJavaScript文を書いていますが、あまりスマートではありません。 これ以外の記述方法はあるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • php + javascriptで値の保持

    現在、ラジオボタンによるデータの受け渡しを調べているのですが submitボタンを使わずに、データ遷移がしたいと思い 色々やっているのですが上手く行きません。 これは実現可能なのでしょうか? <input type="radio" name="hoge" value="1" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check1; ?>> <input type="radio" name="hoge" value="2" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check2; ?>> <input type="radio" name="hoge" value="3" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check3; ?>> 上記のソースの様な感じでとりあえずやってみましたが、 「ボタンを押したら即移動」は可能なものの、value値の保持が javascript上でどうやったらいいか分かりません。 ※$check1~3は遷移後のchcked判定の変数です ※test関数においてのvalueを格納する処理が分かりません やはり無難にsubmitボタン+セッション関数等で構築した方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • javascriptからPHPに変数を渡したい

    Javascriptで制御しているクライアントのページと PHPで制御しているサーバ側のページがあります。 クライアント側のページで生成したJavascriptの変数の値を サーバ側のページに送りPHPで処理したいと考えています。 どのようにすれば変数の値を送ることが出来るでしょうか? 出来ればフォームを使わずに内部処理で行いたですが、 出来なければフォームでも構わないのです。 簡単で構わないので例文を頂けると非常に助かります。 まったくの初心者で恐縮ですが、教授よろしくお願いします。

  • PHPの文字列変数をJavaScriptのalertで表示させたい

    <?php  $mes = 123; print<<<EOF  <script Language="JavaScript">  <!--   JavaScript:alert( $mes );  //-->  </script> EOF; ?> ↑のコードを実行すると123というメッセージボックスが表示されます。 <?php  $mes = "aaa"; print<<<EOF  <script Language="JavaScript">  <!--   JavaScript:alert( $mes );  //-->  </script> EOF; ?> しかしこのように数値変数でははく文字列変数を渡すと表示できません。 JavaScriptにPHPの文字列変数を受け渡すことはできるのでしょうか?

    • ベストアンサー
    • PHP
  • javascriptからphpへ変数

    phpでアクセス解析を作ろうと考えているのですが、javascriptからphpへ変数がいまいちわかりません・・ 具体的には画面の横・縦の変数を渡したいです。 postやget以外の渡す方法ってないんでしょうか? 外部ファイルとして解析用.phpを読み込みたいのですが、postやgetの場合、submitした後ページを移動してしまいます。 全てのページに設置したいと思っています。 初心者なので全くわかりません・・ 解答宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう