アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP変数の文字列データを、
<a href ="Javascript:xxx($data)">として、関数を実行させたときに、関数側での

function xxx(data){
--データで指定されたhtmlへ移動したい
}

という方法は、実現できないのでしょうか。

Javascriptのエラーでデータの受け渡しができていないみたいなのですが、わかる方教えてください。

A 回答 (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内でどのような変換が行われてゆくか、詳細に推定しておく必要があります。
    • good
    • 0

$dataは、PHPの変数ってことですかね?



試してませんが
<a href ="Javascript:xxx(<?=$data?>)">
じゃないですか?

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

出力したhtmlソースを確認してください


$data が例えば a.html だとすると

<a href ="Javascript:xxx(a.html)">

となっていないでしょうか

javascript のほうで引数として文字列を渡したいならば、
xxx('a.html') となるように変更が必要でしょう


また、エラー文、省略されている関数内のスクリプト、htmlソース等
回答を求めるための内容が不足しすぎです

私も見当違いの回答をしているかもしれませんので、
解決なさらない場合は全て補足するのが良いと思いますよ

この回答への補足

申し訳ありません。拙い文章でした。

まず、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.とでています。

補足日時:2007/02/08 19:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!