• ベストアンサー

javascriptで、遷移なしに他ファイルへ変数を渡したい場合

javascript、データベース、SQL等を現在勉強中なのですが 現在製作していることの プログラムというかアルゴリズム?がどうしてもうかびません。 まずはじめにあるページを表示させ、そのページに検索ボタンがあります。 検索ボタンを押すとDIVウィンドウが表示され。そこに検索条件を入力 決定のボタンで検索後、検索結果がDIVウィンドウ内に10だけ件表示されます。 検索結果が11以上ある場合は、よくある検索サイトのように ページ1、ページ2にと、それもDIVウィンドウ内にボタンを表示させ そのページ2のボタンを押したら、11件目からまた10件を表示 というような物を考えています。 プログラムの一部は流用していて divウィンドウを表示、検索条件を指定検索、一番初めの結果の表示 検索結果の数によるページボタンの表示まではできています。 そこから、ページボタンを押した次の処理を 遷移なしにどのようにやればよいのかがおもいうかびません。 ページボタンが押されたら、検索条件と押されたボタンの値を location.href = pagename.sqlfile?id=1234&page=2 のようにして、SQLが記述されたファイルに飛ばして 処理をさせるのかなと思ったのですが あっさりとページ遷移してしまいます・・・ 何かヒントを教えていただけませんでしょうか・・・ プログラムについては初心者で 言葉の使い方等が間違っていたら申し訳ありません。 よろしくお願いします。

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

  • ベストアンサー
noname#84373
noname#84373
回答No.3

<html> <body> <script> a="[ {'ID':'1' ,'AGE':'21' ,'NAME':'testname' },{'ID':'2' ,'AGE':'20' ,'NAME':'test2name' }]"; d=eval(a); alert(d[1].NAME); </script> </body>

urecy
質問者

補足

即答ありがとうございます!! 上記の例、ためさせていただきました >a="[ {'ID':'1' ,'AGE':'21' ,'NAME':'testname' },{'ID':'2' ,'AGE':'20' ,'NAME':'test2name' }]"; ただ上記の部分がきめうちになってしまうので a = xmlHttp.responseText; d = eval(a); alert( d[1].NAME); のようにやってみたのですが、アラートでは「undefined」 と表示されてしまいました・・・ >a="[ {'ID':'1' ,'AGE':'21' ,'NAME':'testname' },{'ID':'2' ,'AGE':'20' ,'NAME':'test2name' }]"; この行は他の方法がありますでしょうか?

その他の回答 (5)

回答No.6

alert(xmlHttp.responseText) が、Ano.1の補足と同じになってます? a=[ 略 ];なら良いのですが、 var a=[ 略 ]; となっていると d=eval(xmlHttp.responseText)は失敗します。スクリプトエラーで止まると思いますけど。 varがついてたら、 d= を消して、 eval(xmlHttp.responseText); だけ行ってください。 responseTextの中に書かれているvar a=[]の変数名がそのまま使えます。 JavaScriptがわからなければ、PHPで全部やって、<iframe>で表示するとか、 JSONでわからなければ、CSVやTSVにしても良いと思いますけどね。 最も単純な物なら、 行の区切り文字(通常は¥n)で分割した物を、データの区切り文字(通常は , か¥t)で分割するだけですし。 、、、一応説明をすると、 JSON(JavaScript Object Notation)っていうのは、JavaScriptのObjectを書くためのNotation(書式)です。 var a=new Object(); a.ID='0'; a.NAME='testname'; var a={ID:'0',NAME:'testname'};

urecy
質問者

お礼

回答ありがとうございます。 プログラムは学生のころに授業でやっていた程度なので 基礎の基礎ぐらいしかわかりません。 教えていただいたこともわかる部分とわからない部分があるのですが さらに勉強を続けて頑張ろうと思います。 ありがとうございました!

noname#84373
noname#84373
回答No.5

a = xmlHttp.responseText; は良いのですが、JSON形式のデータ構造がどうなっているかの わかりません。サンプルで提示されたものを1行にしただけですよ。 受け取った文字列をevalで変数として受け取るのですが 吐き出す側も、受け取る側もき正しい形式として処理しないと 経験上、苦労します。というか苦労しました。 ちなみに私は速度優先なのでJSONはどうも・・・

urecy
質問者

お礼

返事が遅くなりすみません。 教えていただいたコードを試してみたのですが その時に些細なミスをしていて、動かなかっただけでした^^; evalってのがポイントなんですね。 自分のレベルが低すぎるので、今読んでるのはほとんど入門書なのですが そこでのevalの説明が 「フォームなどを参照して受け取った文字列を、数値として解釈する。」 a = "5 * 2 - 1" であれば、A=9 になる。とまでしか説明がないので・・・ 今読んでいる本は大分理解できてきたので もう一歩踏み込んだ参考書を購入して、さらに勉強したいと思います。 この先、進めなくなった時にまた書き込むことがあると思いますが どうぞよろしくお願いします。 ありがとうございました!

  • Dumper
  • ベストアンサー率28% (24/84)
回答No.4

Da = [ {'ID':'1' ,'AGE':'21' ,'NAME':'testname'}, {'ID':'2' ,'AGE':'20' ,'NAME':'test2name'} ] alert( Da[0].NAME ) や function F(arg){ for(var i=0; i<arg.length; i++){ //arg[i].AGE と arg[i].NAME } } F([ {'ID':'1' ,'AGE':'21' ,'NAME':'testname'}, {'ID':'2' ,'AGE':'20' ,'NAME':'test2name'} ]) など。

urecy
質問者

お礼

回答ありがとうございました。 今後の参考にさせていただきます。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

PHP 再帰処理 も悪くないけれど やりたい事の殆どは多分「ajax」で引いた方が速いんじゃないかな。 その中にPHP再帰処理も出てくると思うよ

urecy
質問者

補足

お返事ありがとうございます。 PHPとは違うプログラムを使っていたのですが 遷移することなく、データをとってくることだけはできました!ただ・・・ 取得したデータが途中でJSON型?表記?のようになっており そこから個別のデータを抜き出す方法がわかりません。 No1さんの補足に 取得したデータの形を補足しましたので もしよろしければ、回答をお願いいたしますm(_ _)m

  • swqamy
  • ベストアンサー率37% (11/29)
回答No.1

PHPと連携して再帰処理をすればいいのではないでしょうか? 「PHP 再帰処理」と検索をすればサンプルプログラムも検索できます。

urecy
質問者

補足

早々のお返事ありがとうございます! PHPではなく、他のプログラムをしていまして・・・ なんですが、あの後いろいろいじっていると、なんとか遷移することなく データをとってくることはできました!! xmlHttp.open( "GET", URL ); xmlHttp.send( null ); こんな感じでいけました。 ただ・・・それがJSON? という形のデータに変換してしているようで [ { 'ID':'1' ,'AGE':'21' ,'NAME':'testname' }, { 'ID':'2' ,'AGE':'20' ,'NAME':'test2name' } ] 取得したデータは上のような形です。ここから ID1の AGE と NAME を取得するにはどうしたらよいのでしょうか? alert( xmlHttp.responseText.AGE[1] ); このような感じでやってみたのですが、これでは プロパティーがないよ!みたいなエラーがでてしまいました。 match や、indexofを駆使して、個別に取得していくしか方法はないでしょうか? 質問内容が変わってしまいましたが ここがわかると、希望の光がみえますので どうぞよろしくお願いしますm(_ _)m

関連するQ&A