• 締切済み

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