2016-10-19 4 views
0

ユーザーにページAのフォームを記入させてから、それと一緒に$ _POSTデータを送るページBにリダイレクトします。私は$("form").serialize()またはthis.serialize()のようなフォームから投稿データをシリアル化できますが、$ _POSTから取得する必要があるフォームからデータを取得したくないことがわかりました。現在のページに存在するフォームから$ _POSTデータをシリアライズするにはどうすればいいですか?

+2

この質問を編集してより明確に尋ねてください。これは混乱しています –

+0

なぜあなたはそれをやっていますか?あなたはAJAXで情報を送信し、応答を受信した後、その情報でもう一方の情報を作成することができますか?しかし、私はまだそれの使用を理解していない。 –

+0

どのようにデータを投稿していますか?アヤックス?それ以外の場合は、JSでデータをシリアル化し、POSTメソッドを使用して別のページに「リダイレクト」する方法がわかりません。あなたのコードを私たちに教えてください。 –

答えて

0

誰かがこれを行う方法を疑問に思った場合に備えて、私はこれに対する解決策を見出しました。 var post_info = [];は、すべての$ _POST変数を保持する配列を作成します。 これはすべてのポスト変数をとり、ajax post_info = <?php echo json_encode($_POST); ?>;のjson配列に配置します。そして、アヤックスは普通のようです。

  "ajax": { 
       "url": "ajax/test.php", 
       "type": "POST", 
       "data": {post_info: post_info} 
      }, 

php側では、json_decodeは必要ありませんでした。なぜなら、ajaxはこれを$ _POST変数として送信するからです。それ以外は多次元配列なので、アクセス変数は$_POST['post']['item']のようになります。そして、そこに行く。私は前に自分の質問に答えたことはありません。

0

Javascriptを使用してデフォルトのブラウザの動作を上書きしない限り、誰かがフォームを送信すると、ページBに移動します。フォームの「メソッド」と「アクション」を定義して、必要な動作を取得します。したがって、POSTデータを使うにはmethod = "POST"を使い、pageb.phpに行くにはaction = "/ pageb.php"を設定します。次にpageb.phpで、pageaのフ​​ォームからPOST変数にアクセスできます。例えば。

ページA:

<form name="aform" action="/pageb.php" method="POST"> 
    <input type="text" name="name" /> 
    <input type="submit" value="Submit" /> 
</form> 

に自分の名前を入力しますが、pageb.phpにリダイレクト、提出ヒット。次にページbに:

<?php 
    $name = $_POST["name"]; 
    echo $name; 
?> 

名前が表示されます。しかしそれほど刺激的ではありません。

代わりに、AjaxとjQueryのserialize関数を使用して、pageaを終了せずにpageb.phpにフォームデータを送信することもできます。

あなたはこのような何か行うことができます:

<form id="aform" action="/pageb.php" method="POST" onsubmit="return submitForm(event)"> 
    <input type="text" name="name" /> 
    <input type="submit" value="Submit" /> 
</form> 

<script type="text/javascript"> 

    function submitForm() { 
     event.preventDefault(); 
     $.post('/pageb.php', $("#aform").serialize(), function(response) { 
      // Do something with the response 
     }); 
    }; 

</script> 

かなり基本的だが、それが正常に動作してフォームを停止して、フォームをシリアライズし、ページBに送信します。 pageb.phpは、あなたが達成したいものに応じて、何らかの種類のテキスト、プレーンまたはJSONを出力する必要があります。

+0

これは私がやっていることです。私がpageb.phpを押すと、datatabseを照会してデータテーブルを作成するためのajax呼び出しを行っています。 pageb.phpでフォームはなくなりましたが、私は$ _POSTデータを持っています。この状況全体の問題は、データテーブルです。私は、データテーブルにデータを入力せずにページを読み込むことはできません。永久に "読み込み中"と表示され、ページ上には何も描画されません。 – moe

+0

私はあなたに余分なステップを追加したと思います。 PHPでpagebを起動してデータベースクエリを実行し、別のページにリダイレクトするか、pagebをHTMLとしてレンダリングします。ページを変更した後にAjaxコールを送信する必要はありません – Taintedmedialtd

関連する問題