2016-10-24 19 views
0

私はFullcalendar(javascript)を使用しています。イベントをクリックすると、その内容のフォームが開きます。ajaxを使って別のPHPページにデータを投稿

イベントをクリックすると、別のPHPページが開き、そのデータが表示されます。今のところ私はちょうどPAGE2に "こんにちは"文字列を送信しようとしています。ブラウザで

eventClick: function(calEvent, jsEvent, view) {    

var content = "hello"; 

$.ajax({ 

    type:'POST', 
    cache: false, 
    dataType: "text", 
    url: "page2.php?id=<?php echo $_SESSION['id']?>", 
    data: { content: content }, 

    success: function(data){ 
     location.href = 'page2.php?id=<?php echo $_SESSION['id']?>'; 
    }, 
}); 
}, 

PAGE2

$content = $_POST['content']; 
echo $content; 

、私はあなたがそれをフォームデータとPAGE2にPOSTリクエストを行ったイベントをクリックすることを確認:内容:こんにちは。次に、PAGE2への移行といくつかのデータなしのGET要求があります。そして、PAGE2に私はエラーを参照してください:未定義のインデックス:コンテンツ。

この問題を解決しようと多くの時間を費やしましたが、解決策が見つかりませんでした。エラーがどこにあるのか理解してください。

+0

あなたは 'content'という隠れた入力を持つ'

+0

ajax POのポイントは何ですか?あなたが成功した場合にポストデータなしでブラウザーを同じURLにナビゲートさせる場合、STですか?フォームから 'page2.php'へのPOSTアクションを使って直接それらをナビゲートしてください。 –

答えて

1

あなたはそれはあなたが少し

よう

を必要とするコンテンツに隠された入力値に充填した後、フォームがあなたのonClickに機能を提出呼び出して、隠されたinputという名前のコンテンツを<form method='post' action='page2.php?id=....'を作成することができますように思えます

<form id ="theForm" action="page2.php?id=<?php echo $_SESSION['id']?>" method="POST"> 
    <input type="hidden" name="content" id="content"/> 
</form> 
<script> 
    eventClick: function (calEvent, jsEvent, view) { 
     var content = document.getElementById('content'); 
     var form = document.getElementById('theForm'); 
     content.value = 'hello'; // based on your example, obviously you need a value based on the click 
     form.submit(); 
    }, 
</script> 
+0

ありがとう!出来た!私はPAGE2で「こんにちは」を送ることができました。唯一の問題は、関数である "content.val()"を送る必要があることです。 – John

+0

いいえ - 私は** ZERO jQuery **を答えに含めているので、それは 'content.value'ではない' content.val() ' - あなたがjQueryを使ってコンテンツを"取得 "するなら' $( 'content ') '、次に、はい、それは' content.val() ' –

+0

私はちょうど間違った変数を使用して、私は値として" calEvent.content "を使用しなければなりませんでした。今、その仕事は完璧!ありがとうございました!あなたは私のために多くの時間を節約します! – John

0

ajaxリクエストを送信すると、コンテンツが送信されるためです。

しかし成功した場合は、以前のajax呼び出しとは異なるHTTPリクエストを作成するlocation.hrefを使用してPAGE2に再配置します。

POSTよりもGETを通じてコン​​テンツの値を渡すことで目標を達成できます。

POSTリクエストで動作するもう1つの方法は、HTMLページに隠れたフォームを置くことです。あなたのコンテンツに名前 'content'の入力を設定することです。その後、そのフォームのsubmit関数を呼び出します。私は理解し何からhttps://stackoverflow.com/a/26697375/7058912

+0

代わりにタイプ: 'POST'をタイプする必要があります:GETとGETをPAGE2で使用しますか? – John

+0

はい、これは1つの方法です。このリンクをたどることで、POSTリクエストを使用するより良い方法が見つかります。 – creeperdomain

+0

@creeperdomailアドバイスをいただきありがとうございます。私は最初の方法を使ったが、うまくいかなかった。私は今ブラウザでページ2へのリクエストを見ていませんでしたが、同じエラーでPAGE2にリダイレクトされました。 – John

0

:この方法の例については

は、このスタックオーバーフローの質問と回答を参照してください。誰かがカレンダーイベントをクリックしたときに別のページを開きたいとします。あなたが必要なもの

はeventClick

/*GENERATE YOUR URL HERE. EVENT object PASSED TO THE EVENT CLICK FUNCTION ALREADY CONTAINS ALL EVENT DATA LIKE ID ...*/ 
var url = 'page2.php?id='+calEvent.id 
var win = window.open(url, '_blank'); 
win.focus(); 

内側にあるこの情報がお役に立てば幸いです。

+0

で説明しています。また、リダイレクトとともにPOSTデータを送信したいと考えています。しかしそれ以外は正しい方法です。 – creeperdomain