• ベストアンサー

javascriptからphpに配列データを渡す方法

今、Javascriptからphpに配列データを 渡したいと思っています。 あるcheckboxがクリックされたら、 jqueryのajaxを使用して、 ある1次元配列a[] , b[]をphpに渡し、 処理をして、結果をブラウザに表示します。 配列をどうやったら渡せるのか、 何か方法があれば教えて頂けませんかm(_ _)m

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

  • ベストアンサー
  • umota
  • ベストアンサー率46% (150/324)
回答No.4

回答を求める質問ならば 大きなという基準が他人にはわかりません。 何ギガバイト、配列は何百万個くらいか どこでエラーが起きているか 等の情報を書いたほうがよいと思います。 // まさか get で渡しているとか

touchme
質問者

お礼

ご指摘いただきありがとうございます。 まさかのGETで渡しておりました。 POSTで渡したら問題ありませんでした。 大変お手数おかけしました。 あと、配列をJSONにしてPHPに渡したいのですが、 どのようにしたらいいかもしご存じでしたらおしえて頂けませんか? jQuery関連で出来たら嬉しいと思っていろいろ調べていたのですが prototypeの方しか見つかりませんでした。

その他の回答 (3)

  • umota
  • ベストアンサー率46% (150/324)
回答No.3

JavaScript で encodeURIComponent(a.join("\t")) で渡し、 PHP で受け取って explode("\t", $a) しては?

touchme
質問者

お礼

ご回答いただきありがとうございます。 教えて頂いた内容で確かに実現できました。 しかし、今回データが大きいため全データが 乗らなかったようです。 大きなデータやデータ構造が複雑なものでも 渡せる方法は無いでしょうか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

えーと説明がわるかったでしょうか・・・ 「%5B%5D」をつけるというのはこういうことです。 hoge.php?a%5B1%5D=100&a%5B2%5D=200 この例だとhoge.phpはa[1]=100,a[2]=200というデータを受けられます

touchme
質問者

お礼

ご回答いただきましてありがとうございます。 ご説明が悪いなどとんでもございません。 内容を把握しておらず申し訳ありません。 この方法はとても有益だと思いました。 しかし今回はデータ量が大いためか 全データが乗りませんでした。 大きな配列や多次元配列、またオブジェクトをごっそり転送できる方法が あればいいなと思っている次第ですが。。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

質問の意図がよくわからないですが、javascriptからphpに インタフェースできるのは文字です。 文字で渡されたデータをphpが配列として解釈する安易な方法としては わたすパラメータに「%5B%5D」をつけてみてはどうでしょう?

touchme
質問者

お礼

ご回答いただきありがとうございます。 言葉足らずで申し訳ありません。 意図は配列情報をphpに渡して、php側が簡単にそれを配列にパース出来る方法を探しております。 文字で渡すのにjsonやxmlがいいなと思っていたのですが javascriptの配列をそれらに変換する方法がわからなかったので 皆様はどうされているのかヒントをいただけたらと思った次第です。

関連するQ&A

  • JavaScriptからPHPに配列を渡すやり方

    JavaScriptからPHPに配列を渡すやり方を教えてください。 やりたい事は、A.HTMLのJavaScriptで動的に作成された配列をB.PHPにPOSTで渡して、B.PHPに遷移したいと思っています。Ajax、JSONなどのキーワードで検索するとそれらしい回答はあるのですが、B.PHPに遷移したいので、Ajaxでもないような気がして、やりたい事にマッチする回答がありませんでした。配列列をHiddenで渡すしかないのでしょうか。もう少しスマートのやり方がないでしょうか。 よろしくお願いします。

  • PHP二次元配列をJavaScript配列へ変換

    PHPの二次元配列データを、JavaScriptの二次元配列データとして使用したいのですが、どうやって変換すればよいでしょうか?

    • ベストアンサー
    • PHP
  • PHPの配列をjavascriptへ渡したい

    PHPの配列をjavascriptの配列に渡したいのですがやり方がわかりません。 変数の渡し方ならわかるのですが配列はどう渡せばいいのでしょうか? for文を使って渡せばいいと思うんですがどうやればいいか分かりません。 <?php $filedata=file("data.txt");//javascriptに渡したい配列 ?> <script language="javascript"> var a=new Array();//PHPの配列をこの配列に入れたい </script> 何方か教えてください。

    • ベストアンサー
    • PHP
  • Ajax以外で、JavaScriptからPHPへ渡

    Ajax通信以外で、JavaScriptからPHPへ変数(配列)を渡したいのですが、 可能でしょうか? 下記のような状態の時、js変数dataを、Ajax通信を利用せずにPHP変数として取得したいのですが、どうすればよいでしょうか? JavaScript関数の中で、PHPフォームの送信ボタンをクリックさせる(ような)ことは出来ないのでしょうか? <button type="button" onclick="testsubmit();">送信</button> <script> function testsubmit(){  js処理;  var data = ★★; } </script> ■最終的にやりたいこと ・ボタンをクリックしたら、js処理で取得したjs変数(配列)を、Ajax通信を利用せずに、PHP変数として受け取りたい ・それを出来れば1クリックで処理したい

  • JavaScriptとphpでできますか?

    お世話になります。 ずーっと考えているのですが、実現方法及び、実現できるのかどうか、 で悩んでいます。 アドバイスをお願いいたします。 Aさんが、あるサイトのボタンクリックすると、Bさんの待ち受け画面htmlにつながります。 (ここまでは某APIにて実現しています(電話)) その際に、追加でAさんのURLをBさんのサイトに表示させたいのです。 方法として、Aさんがボタンクリックしたときに、JavaScriptでURLを取得し、 POSTデータにして、ajax通信でBさんのサイトにあるphpを実行。 でも、phpでURLデータは取得できるとして、その後、どうやってBさんのhtmlに出力させるの(既にhtmlは表示されているし)? Bさんhtmlの中の表示させたい<div>などに <?php echo "{$url}"; ?>などできる? もし出来たとして、その場合、Aさんは(ソースコードレベルで)どうやってBさんにデータを渡すの? phpを実行させるの? phpの名前は? Aさん、Bさんのhtmlは同一Webサーバーです。 Bさんのhtmlは最初から表示されています。 考えても、考えても 出来そうで出来ない。。。 こんなことは出来ないのでしょうか? どなたかアドバイスをお願いいたします。

    • ベストアンサー
    • PHP
  • テキストファイルやcsvファイルで読み込んだデータを使ってjavascriptで処理する方法

    javascript初心者です。 いろいろと調べたのですが、イマイチよく分からないので質問させてください。 テキストファイルやcsvファイルを読み込んで、 javascriptで判定処理をしたいと思います。 例えば、 A地区,1 B地区,0 C地区,4 ・・・ といったデータを読み込んで、 javascriptで「0なら○地区には画像Aを表示、 それ以外なら○地区には画像Bを表示する」 という形で処理したいです。 でも、 ・どうやってファイルを読み込むのか ・読み込んだデータをどのようにして配列へ入れるのか がよく分からないです。 これらのページ 「http://q.hatena.ne.jp/1195740627」 「http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter03/002/index.html」 のような方法を参考にすれば実現可能なのでしょうか。

  • ajaxで取得した配列の取り扱い

    こんにちは。 jqueryとphpを利用して、ajaxの練習をしているのですが、 受け取った配列の扱いではまってしまっています。 javascript.js $.ajax({ type : "post", url : "http://localhost/*****.php", data : post_data, datatype : "json", success :function(data,datatype){return_data(data);}, error : error_ajax(), }); php側では、受け取ったデータに応じて多次元配列を作り、jsonに変換してechoしています。 そして以下が成功時に実行する関数です。 function return_data(obj){ //配列topic以下を処理する関数 disp_topic(obj['topic']); //配列topic以下を処理する関数 dixp_tags(obj['tags']); } すると、obj['topic']が見つからないというエラーが出ます。 firebugsで見てみると、function return_dataの引数objには、jqueryがjsonからjavascriptのオブジェクトへ変換処理した配列が渡っているようです。。 引数objの値は以下のようになっていいます。 { "topic":  [{"tagno":"27","tags":"***"}], "tags":  [{"tagno":"27","tags":"****","count":"6"},   {"tagno":"29","tags":"****","count":"4"}, {"tagno":"1","tags":"****","count":"3"}, {"tagno":"9","tags":"****","count":"1"}] } 変数obj内のtopicに応じた配列と、tagsに応じた配列をそれぞれ取り出し、それぞれの関数で処理したいのですが、これを取り出すのにはどのようにしたらよいのでしょうか。 var array = obj['topic']; などと散々やってみたのですが、2日間解決できず・・・。 よろしくお願い申し上げます。

  • javascript と php とでのデータの受け渡し

    既出の質問かもしれませんが、どの回答を読んでもいまいち理解できなかったので質問させて下さい。 phpからjavascriptへ、その処理結果をphpに送りたいと考えております。 まず phpの変数のデータをjavascriptでクライアント側で処理させるために、 print(<script type='text/javascript'>);~などなど、 printを使ってphpの変数を入れ込んだスクリプトを出力しています。 そして、出力したjavascriptの中にクライアント側の処理後のデータ をphpに送るために、 XmlHttpRequestのopenメソッドで("GET",url,true)とし、 urlには"***.php" + "?a=" + aの値 をいれて request.send(null);で送信するようにしています。 最後に、送信先のphpで $a = $_GET["a"];として受け取ろうとしています。 ちなみに、これらは全て同一ファイル上に書いてあり、 XmlHttpRequestのopenメソッドのurlには、 そのファイル自身を記述してあります。 ブラウザでアクセスしてソースを見てみると、 javascriptは記載されていますが、処理がされていないようで、よって 最後にGETでデータも取得がされていないようです。 そもそもこういったことは可能なのでしょうか? 自分の考え方は間違っているのでしょうか? javascriptもphpも初心者なもので、考え方があっているのかいないのかも 判断できない状況です。また、このjavascriptが何をきっかけに実行されるようにすればいいのかもよくわかりません。 それでは、宜しくお願い致します。

  • PHPで配列の検索方法

    PHPで下のような2次元配列があったとします。(りんご=a、みかん=bのような意味です。CSVからデータを2次元配列に格納したものです。) $data[0][0]="りんご" , $data[0][1]="a" $data[1][0]="みかん" , $data[1][1]="b" $data[2][0]="ばなな" , $data[2][1]="c" $data[3][0]="ぶどう" , $data[3][1]="d" ここで下のような1次元配列$hogeがあったとき $hoge[0]="ばなな" , $hoge[1]="りんご" 新たに1次元配列$hogehogeを用意して、2次元配列の中から"りんご"や"ばなな"に対応する文字列を探し出して $hogehoge[0]="c" , $hogehoge[1]="a" と、格納したいのですが、やり方がわかりません。 イメージとしまして、 $hoge[0]→($data[0][0]~$data[3][0]の中から探す)→($data[2][0]であるとわかる)→($data[2][0]に対応するのは$data[2][1]だとわかる)→($hogehoge[0]=cと格納) もし分かる方がおられましたらお願いします。

    • ベストアンサー
    • PHP
  • javascriptのPHP化について

    宜しくお願い致します。 javascriptの外部ファイルをPHP化して、サーバサイドで動的に生成した内容を吐き出し、それをHTML側でjavascriptの外部ファイルとして受け取って処理しております。 この場合のブラウザがアクセスした際に処理される順番は・・・ (1)HTMLの読み込み開始 (2)header内のjavascript外部ファイルの読み込みと実行 (3)HTMLファイルのbody以下を読み込み (4)結果をブラウザに返して表示 という流れになるはずです。 この場合、(2)のjavascript外部ファイルの方がbodyより先に実行されるはずです。 しかし、javascript外部ファイル内のPHPでセッションデータを扱っている場合、(3)のbody内でPHPでセッションを定義した内容が、なぜか(2)のjavascript外部ファイルで反映されて実行されるのです。 私のイメージでは・・・ (1)HTMLの読み込み開始 (2)header内のjavascript外部ファイルの読み込みと実行  ※この時セッションは反映しない (3)HTMLファイルのbody以下を読み込み  ※この時にセッションを入れても(2)が既に実行さられているので反映しない (4)結果をブラウザに返して表示  ※結果、セッションにデータが入っておらず、php側でエラーを吐き出しjavascriptが止まる という様になるかと思ってましたが、なぜか実行されます。 javascriptはHTMLが全部読み込まれてから実行されるのでしょうか?

専門家に質問してみよう