MySQLからPHP5で作成された、配列データ($fPoint_array)、カウント($fPoint_count)、フラグ($fPoint_flg)の3つ引数を、JavaScriptの関数のテンプレートwindow.onload時に渡す方法が解りません。



配列には以下のようなデータが入っていたとします。
添え字,id,lng,lat,name
0,2,130.654,37.209,鳥取砂丘
1,5,132.890,32.567,いそ海水浴場


JavaScript関数で受け取った引数を、上記配列のlogとlatだけをのFor文で読み込ませたいのですが、以下のような感じでは?と思っています。addMarkerは内部関数名で別の関数に飛ばします。


window.onload = onLoad;

function onLoad(fPoint_flg, fPoint_array, fPoint_count) {
for(i=0; i<fPoint_count; i++) {
addMarker(beach_array[i]['lng'],beach_array[i]['lat']);
}
}


テンプレートはHTML_QuickFormとSmartyを使用しています。
window.onload時に3つの引数を渡す方法と、beach_array[i]['lng']部分の書き方が解らないのでご指南いただければと思います。
よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:2007/05/02 17:05:28
  • 終了:2007/05/09 17:10:02

回答(1件)

id:Sampo No.1

Sampo回答回数556ベストアンサー獲得回数1042007/05/02 19:23:57

ポイント60pt

要はJavascript側でbeadch_arrayという配列を使いたいわけですね。

var beach_array=[
  { lng: 130.654, lat: 37.209 }
 ,{ lng: 132.890, lat: 32.657 }
];

という文字列をPHPの側で生成してJSのどこかに出力しておけばいいのです。

  • id:kurukuru-neko


    テンプレートエンジンは
    文字列を出力する機能が基本

    >for(i=0; i<fPoint_count; i++) {
    >addMarker(beach_array[i]['lng'],beach_array[i]['lat']);
    >}

    smartyでJavaScriptで処理したい文字列を生成する。

    http://www.north.ad.jp/~shmd_ak/rc/smrt-ex03.html
  • id:seadwell
    >addMarker(beach_array[i]['lng'],beach_array[i]['lat']);

    スミマセン。間違えました。
    そして、また舌足らずでした。

    >addMarker(fPoint_array[i]['lng'],fPoint_array[i]['lat']);

    でした。
    PHP風に書けば上記のようになると思うのですが、JSでのfPoint_array[i]['lng']の部分の書き方と、配列引数をwindow.onload時に渡すには?という質問でした。
    PHP側で$smarty->assign('fPoint_array', $fPoint_array);
    により、{$fPoint_array}にてテンプレートに配列は渡してあります。
    {$fPoint_array}をJSに渡したいと考えたのですが・・・。


    > 文字列を出力する機能が基本
    や、Sampoさんの回答を重ねますと、配列は引数でJSに渡すことはできないということでしょうか?
    配列を使うには、その配列を文字列に生成してから引数にするのでしょうか?
  • id:Sampo
    回答数制限があるので以降はコメントで。

    > 配列は引数でJSに渡すことはできないということでしょうか?

    とにかく、Javascriptが解釈できるのはHTML上にある文字列だけです。それを生成したPHP側の内部のことはまったく知ることもできません。

    ですから、配列データが渡したければ、配列としてJavascriptが読み込めるような形で文字列を与える以外にないのです。
  • id:seadwell
    まず、HTMLからの引数をJavaScriptのwindow.onload時に渡すには?という質問をお願いします。
    できないのであれば『できない』という返事が聞きたく、できるのであればその方法が知りたいです。

    さらに配列に関して、再度同じことを繰り返しますが、
    お寄せいただいたコメント全てを私なりに解釈すると、SmartyでHTMLに受け継いだ配列はJSには渡すことはできず、PHPで配列もどきに書き直した文字列をHTMLに渡さなければ、JSには渡すことができない。
    との、解釈でよろしいでしょうか?

    回答者を指定することは迷惑かと思いますし、その義務もまったくないことは承知していますが、できることならばkurukuru-nekoさんの回答欄での回答を希望します。

    何が解らないのか?解ってないので、質問が解釈しづらくご迷惑をおかけします。
  • id:Sampo
    大変失礼な言い方をしてしまいますが、HTTPとブラウザに関する理解が決定的に不足しておられるように思えます。

    現状のスキルのままでは「できない」としかお答えできません。

    もう少し簡単なシステムを作ることから始めて、理解を深めてから再挑戦するのが結果的には早道かと、忠告します。
  • id:seadwell
    Sampoさん、お願いです。
    私のスキルがどうとか関係なく、その方法が知りたいがゆえに質問しているのです。
    また、スキルが足りないから質問しているのです。

    1人で学習しているものの質問は、時には、経験者から見て的外れな質問となることも多く見られるでしょう。
    しかし、助けがほしいときに、HTTPとブラウザに関する理解が決定的に不足とありますが、どこがどのように不足しているか?の指摘もなく『あなたでは無理です』とは失礼極まりません。

    そのような疑問でのお礼に、少ないながらのポイントを差し上げるFAQが、このはてなと思っております。
    質問の意図を汲むことができないなら、コメントをお控えください。


    > 忠告します。
    余計なお世話です。
    私のコメントは遠まわしにSampoさんのコメント含む回答を拒否しているのです。あなたコメントがつくので他の方の回答が得られない可能性もあります。
    あなたのコメントは、質問者の洞察なく、押し付けがましい書き込みに理解が得られないとスキル不足と一喝され迷惑千万です。
    『とにかく』とか『忠告』とか、人の神経を逆なでするような説教が聞きたく、質問しているのではありません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません