• ベストアンサー

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

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

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

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

>JavaScriptで動的に作成された配列を 配列とはjavascriptの配列なのか、 >B.PHPにPOSTで渡して、B.PHPに遷移したい 動的にpostのフォームをつくってやる一番スマートでしょうね <head> <script> function post_b(){ var hoge=document.getElementById("hoge"); if(hoge) hoge.parentNode.removeChild(hoge); hoge=document.createElement("form"); hoge.setAttribute("action","b.php"); hoge.setAttribute("method","post"); var datas=[ {"name":"hairetu[0]","value":"fuga1"} ,{"name":"hairetu[1]","value":"fuga2"} ,{"name":"hairetu[2]","value":"fuga3"} ,{"name":"hairetu[3]","value":"fuga4"} ]; for(var i=0;i<datas.length;i++){ var hairetu=document.createElement("input"); hairetu.setAttribute("type","hidden"); hairetu.setAttribute("name",datas[i]["name"]); hairetu.setAttribute("value",datas[i]["value"]); hoge.appendChild(hairetu); } document.getElementsByTagName("body")[0].appendChild(hoge); hoge.submit(); } </script> </head> <body> <input type="button" value="post b" onclick="post_b()"> </body>

panda1212
質問者

お礼

ありがとうございます。大変参考になりました

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

>配列列をHiddenで渡すしかないのでしょうか。 そうですね。 配列要素の数だけinput hiddenを作ってもいいし、カンマやコロンなどでつないで長い1つの文字列にしてPHPで分解してもいいし。

panda1212
質問者

お礼

やはりそうですか。ありがとうございます。

関連するQ&A

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

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

  • 【PHP,JavaScript】文字が誤変換される

    以下は、プログラムの一部でJavaScriptからPHPにJSONデータを送信する処理です。 引数を渡すJavaScript側(Extjsライブラリを利用)のプログラム // Ajaxリクエスト処理 Ext.Ajax.request({ url: "php/updatedata.php", success: handleSuccess, failure: handleFailure, params: { data: Ext.util.JSON.encode(data) } // パラメータをJSON形式にして送信 }); 配列dataの中身は「data[0] = 3,data[1] = パソコン」となっています。 Ext.util.JSON.encode(data)により配列dataをJSONに変換して 受信するPHP側のプログラム:updatedata.php JavaScriptで渡したJSONを$_REQUEST['data']で受信して中身を見ると以下のようになっています。 if (isset($_REQUEST['data'])) { $tmp = $_REQUEST['data']; 【受信したJSONデータの中身】 [{"id":"3","name":"繝代た繧ウ繝ウ"}] 「パソコン」という文字列が「繝代た繧ウ繝ウ」という文字列に変換されてしまっています。 Extjs側の「Ext.util.JSON.encode」が悪いのでしょうか、それともPHP側の「$_REQUEST」が悪いのでしょうか。はたまた何か別の原因があるのでしょうか。 ちなみに、環境は以下のようになっています。 WindowsXP,Windows7(両方とも同じ結果になってしまいました。) PHP5.3.1 Ext3.3.0 以上、よろしくお願い致します。

  • JavaScriptでPHP実行する方法

    質問させて頂きます。 現在、JavaScriptを用いて、DB内に登録されている画像を読み込み(複数の中から1つ)表示させたいと考えています。 JavaScriptを用いて画像を読み込み表示させるといった実装を行ったことが無いので、一般的に行われてる方法を教えて頂けないでしょうか。 私の考えている方法としては、 HTMLファイル上のJavaScriptでajaxというものを用いてPHPを実行させ、PHP上でDBの中から画像情報をランダムでひとつ読み込み、その情報をHTMLにjsonで返して表示させるという方法を使用するべきなのかと考えています。 ですが、ajaxという方法を使用したことが無いため、この方法が正しいのか、他に良い方法があるのではないかと不安になり質問させて頂きました。 もし何か良い方法をご存知の方がいらっしゃいましたら、ご教授お願いいたします。 また、質問に不備な点などあるかもしれませんので、その際はご指摘下さい。 よろしくお願いいたします。

  • 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でCGIの呼出し・・・???

    独学でプログラミングを始め、最近ではWeb系の勉強を始めました。 JavaScriptという言語とHTMLの勉強をしています。 そこで、どうしてもわからない事があります。 色々とネットで検索をしてみたのですが、私の理解力がないのか回答を見つけることができません。 どうか教えてください。 JavaScriptで他のサーバにあるCGIにデータを渡す方法です。 JavaScriptでHTMLの「Get」や「Post」のような機能があれば、できるのではないか、と考えたのですが、リファレンスを見ても、「Get」や「Post」はありませんでした。 JavaScriptにはそのような機能はないのでしょうか? Ajaxという機能があるようなのですが、その機能を使うしか方法はないのでしょうか? Ajaxも勉強したいと思っているので、方法があれば、ぜひ教えてください。

  • jqueryの$.ajaxでPHPに値を渡したい

    下記の様にjquery(ver1.4.x)の$.ajax関数を使って、 ajaxでPHPに値を渡したいと思っています。 ■Javascript (中略) $.ajax({ type:"POST", url:"test.php", data:{"check":check}, success:function(){ alert("OK"); } }); ■PHP(test.php) if ($_POST) { $_SESSION["data"][] = $_POST["check"]; } この時、普通の状態ならtest.phpで値が受け取れ、$_SESSION["data"]の配列内には$_POST["check"]の値が格納される事を確認しました。 しかし、ブラウザのCookieを無効(ブロック)に設定した場合のみ、$_SESSION["data"]の中には$_POST["check"]の値が入らないのです。 session_start();はJavascriptのあるHTML、test.php両方に書かれています。 クッキー無効の場合はJavascript(ajax)-PHP間でセッションは切断されてしまうのでしょうか? php.iniの設定では session_use_cookiesもsession_use_only_cookiesもOnになっています。 詳しい方おられましたらご教授宜しくお願いします。

    • ベストアンサー
    • PHP
  • HTML+PHP+JavaScript

    リンクからJavaScriptでPHPに遷移させ、書き換えた内容を表示するというものをやりたいのですが。。 PHPではcase文で場合わけし、モードによってHTMLを表示させる機能はできています。 しかし、HTMLのリンク<A href=""></A> で新しいウィンドウを開き、そのページにその処理を行いたいです。 現在ボタンなどでは下記のように遷移させています。 <!-- function send(action, mode){ document.forms[0].mode.value = mode; document.forms[0].action = action; document.forms[0].method = "post"; document.forms[0].submit(); return false; } //--> <INPUT TYPE="button" VALUE="編集する" onClick="javascript:send('{val PHP_PATH}{val EDIT_PATH}','baseinfo')"> これですと、指定したアクションのPHPに遷移し、このモードにより処理をわけています。 しかし、リンクがクリックされたら、処理にいき、 さらにその処理をしたデータを新しいウィンドウに表示されるというのがどうもうまくいきません。 普通に ・<A HREF="" onclick="javascript:send('{val PHP_PATH}test.php','template')" TARGET="conf">テスト</A> とすると、元のウィンドウに、修正した内容が反映され、新しいウィンドウはブランクしてしまいます。 何か他によい方法はありませか?

    • ベストアンサー
    • PHP
  • PHPとJavaScriptで...

    PHPで以下のようなリンクを生成し、 <form name="hoge" method="post"> <input type="hidden" name="hogehoge"> </form> <a href="javascript:void(0)" onClick="submit('0')">あ</a> <a href="javascript:void(0)" onClick="submit('1')">い</a> <a href="javascript:void(0)" onClick="submit('2')">う</a> <a href="javascript:void(0)" onClick="submit('3')">え</a> <a href="javascript:void(0)" onClick="submit('4')">お</a> POSTで受け取ったデータを再びPHPで使用したいのですが、 (同一ページ内で) 色々調べてみたのですが、いまいちわかりません。 JavaScriptの部分をどのようにしたらよいか、また根本的に間違っていたらどのように変えればよいか、 教えてください。 m(_ _)m

    • ベストアンサー
    • PHP
  • javascriptで困っています。教えてください

    JavaScriptで配列をPOST送信しようとしています。 <form>や<input>を作っておいてではなく、javascriptで生成する関数からしたいと思っています。以下のコードでうまくいきません。 教えていただければありがたいです。よろしくお願いします。 <!DOCTYPE html> <html> <head> <script type="text/javascript"> var ar = new Array(5); ar[0] = 111; ar[1] = 222; ar[2] = 333; ar[3] = 444; ar[4] = 555; function sampleForm(value){ var form = document.createElement('form'); document.body.appendChild( form ); var input = document.createElement('input'); input.setAttribute('type','hidden'); input.setAttribute('name','hidden_input'); input.setAttribute('value', value); form.appendChild(input); form.setAttribute('action','send.php'); form.setAttribute('method','post'); form.submit(); } </script> </head> <body> <a href=“javascript:sampleForm(ar)”>クリックしたら“samplepost”をPOST送信</a> </body> </html> send.php-------------------------------- <?php $num = isset($_POST['hidden_input']) ? $_POST['hidden_input'] : null; print "num: " . $num; ?>

  • 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

専門家に質問してみよう