POST送信をフォームの送り先とは別のページにも送りたいのですが、どうすればよいのでしょうか?


具体的には
カテゴリ選択ページ

メインページ

検索機能ページ

の三種あり

カテゴリを選択して
メインページに飛ぶ
メインページではjQueryのロードにより検索機能ページを読みんでおり、そのカテゴリのみの検索結果を表示する

ことをしたいのですが

カテゴリを選択するためのIDをメインにPOST送信しても、検索機能ページには送られてないので検索結果には反映されません

カテゴリから検索機能ページに送るようにすれば動くようにはなっています。

セッションなら、いけるかなと思いセッションを使ってみましたがダメでした。

カテゴリからメインに送られたPOST情報をうまく送るにはjavascriptを利用するとは想像できるのですが、buttonにonclickというやり方しかわかりません
アクションを起こさず検索機能ページにPOST情報を送るにはどうすばよいのでしょうか?

Javascriptのコードつきでよろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/12/13 10:23:25
  • 終了:2011/12/15 04:54:06

ベストアンサー

id:Cherenkov No.1

Cherenkov回答回数1503ベストアンサー獲得回数4932011/12/13 10:39:31

質問文が複雑なのでよく読んでいませんが(逃げ道)、複数ページにPOSTせずに済む解決策もあるような感じがします。
動くものを提示したほうが回答しやすいです。

複数POSTするだけなら、

$('#form').submit(function(){
  $.post("test.php", { name: "John", time: "2pm" } );
});

のようにすれば#formのsubmit前に別のページにpostすることができるかと。


参考:

他7件のコメントを見る
id:robopit

cookieに変数を入れようとすると
エラーを出すので調べて見ると
setcookieを使う場合はあらゆる出力より前に送信される必要があるとかで
変数を入れるという行為がいけないようなのですが、このような場合はクッキーの使用は無理ですかね?

2011/12/14 12:28:05
id:Cherenkov

setcookieは使った事無いのでわかりません。cookieはjavascriptからも使えます。

2011/12/14 12:58:18
  • id:windofjuly
    うぃんど 2011/12/13 10:56:03
    これまでの流れでphpと仮定します
    (はじめてこの質問見た人用の確認だったりします)

    セッションはサーバー内部だけの話なので、
    クライアントから直接的に値を読み取ることは出来ないです

    対応としては、
    POSTを受け取ってメインページを作り出すメインphpで、
    メインページの中にPOSTの値を書いておいてやれば、
    JAVAScriptでその値を利用できるようになるという流れです

    POSTの値をどうやって、どこに書いておくかについては、
    いくつか方法があるので、そちらのコードがわからないと、
    どれがいいかはわからず、今回もコメントにしておきます

    年末が近づき忙しいと言い訳をしておこう・・・
  • id:robopit
    お忙しいところ回答ありがとうございます。
    PHPと書くのを忘れていました申し訳ないです。

    >POSTを受け取ってメインページを作り出すメインphpで、
    >メインページの中にPOSTの値を書いておいてやれば、
    >JAVAScriptでその値を利用できるようになるという流れです

    これは単純に変数に入れるということなんでしょうか?

  • id:windofjuly
    うぃんど 2011/12/13 12:12:15
    JAVAScriptに直接組み込むなら、例えば下記のような具合

    var selectId = <?php echo 受け取った値 ?>;
  • id:robopit
    メインのページに

    window.onload = function() {

    var category = "<?php echo $categoryS_id; ?>";

    $.post('search_base.php',{ 'categoryS': category });

    }

    このような感じで張っているのすがダメみたいです。

    これ単体としては間違いはありますでしょうか?
  • id:Cherenkov
    $を使う場合はwindow.onloadではなく$(function(){ここに書く})とか。
  • id:robopit
    window.onload = function() {
    の部分を
    $(function(){
    にするということでしょうか?

    やってみたのですが、ダメでした

    $(document).ready(function(){
    もできませんでした。
  • id:Cherenkov
    window.onload時にjQueryがロードされているとは限らないので、全てのjQueryコードは $(functionや$(document).readyの中に書くべきです。
    なにがどうダメなのでしょう、エラーメッセージはでるのか。
  • id:robopit
    エラーでません
    変数の方はアラートで確認しみましたが想定の数字が入っており大丈夫でした。

    送った先にechoで送った確認をとれるようにしていますが
    表示されない状態です。

    送り先を$(document).ready(function()loadで読みこんでいるのですが、それなどは関係ありますでしょうか?
  • id:Cherenkov
    gistのファイル名は書いたほうが回答つくかも。

    $.post('search_base.php',{ 'categoryS': categoryで更新したのち、
    $("#testright").load('session_list.php'); $("#tate").load('search_base.php'); を読み込むなら
    こうとか。

    $(document).ready(function(){
    var category = "<?php echo $categoryS_id; ?>";
    $.post('search_base.php',{ 'categoryS': category }, function(){
    $("#testright").load('session_list.php');
    $("#tate").load('search_base.php');
    });
    });
  • id:robopit
    読み込みは行われているのですが
    search_baseの方の変数が表示されないのでおそらく受け渡しがうまくいってないのだと思います。

    Javascriptの方の変数の値はうまくいっているようなのですが
  • id:robopit
    https://gist.github.com/7d0f4398fa693e514243
    ファイル名修正しました。

    色分けされるのですね。
    教えてくださってありがとうございます
  • id:Cherenkov
    phpでcategorySを扱ってるところないもんね
  • id:robopit
    修正してみたのですが、同じ状況でした。
  • id:robopit
    質問の回答については理解できたのでこちらの質問は終了します。
    もうひとつ質問を上げたいと思いますのでよろしくお願いします
  • id:robopit
    id:Cherenkovさん
    ポイント付きの質問を上げたつもりだったのですがついてませんでした(100P)
    別の質問あげるつもりなので、コメントしていただければ付加させていただきたいと思いますので、よろしくお願いします

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

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

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

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