2016-10-24 2 views
0

나는 Fullcalendar (javascript)를 사용합니다. 이벤트를 클릭하면 내용이 포함 된 양식이 열립니다.ajax를 사용하여 다른 PHP 페이지에 데이터 게시

eventClick: function(calEvent, jsEvent, view) { 

content.val(calEvent.content); //content of event 
$('#event').show(); 
formOpen('edit'); 

}, 

이벤트를 클릭하면 다른 PHP 페이지가 열리고 해당 데이터가 표시됩니다. 지금은 PAGE2에 "hello"문자열을 보내려고합니다. 내용 : 브라우저에서

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

아약스 PO의 요점은 무엇입니까? ST를 사용하면 성공적으로 게시 된 데이터가없는 브라우저에서 동일한 URL로 이동하게됩니까? 그냥 폼에서 POST 액션을 사용하여 직접'page2.php'로 이동하십시오. –

답변

1

보인다

같은 비트
<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에서 "hello"를 보낼 수 있습니다. 유일한 문제는 함수 인 "content.val()"을 보내야한다는 것입니다. – John

+0

아니야 - 아니에요 ** 답변에 ZERO jQuery **가 포함되어 있으므로 content.val()이 아닌'content.value'입니다 - jQuery를 사용하여 "get"하는 경우'$ ('content ')', 그렇다면'content.val()' –

+0

그냥 변수를 잘못 사용했기 때문에 "calEvent.content"를 값으로 사용해야했습니다. 이제 완벽하게 작동합니다! 다시 감사합니다! 나 한테 많은 시간을 절약 해 줘! – John

0

아약스 요청을 보내면 콘텐츠를 보낼 수 있습니다.

하지만 성공하면 이전 ajax 호출과 다른 http 요청을 작성하는 location.href를 사용하여 PAGE2로 재배치합니다.

POST 대신 GET을 통해 콘텐츠 값을 전달하여 목표를 달성 할 수 있습니다.

POST 요청에 대해 작동하는 또 다른 방법은 html 페이지에 숨겨진 양식이 있어야하며 'content'라는 이름의 입력을 콘텐츠로 설정하는 것입니다. 그런 다음 해당 양식에 대한 제출 기능을 호출하십시오. https://stackoverflow.com/a/26697375/7058912

+0

대신 'POST'를 입력하십시오. 형식을 써야합니다 : GET을 사용하고 PAGE2에서 GET을 사용 하시겠습니까? – John

+0

예, 한 가지 방법입니다. 링크를 따라 가면 POST 요청을 사용하는 더 나은 방법을 찾을 수 있습니다. – creeperdomain

+0

@creeperdomail 조언에 감사드립니다. 첫 번째 방법을 사용했지만 작동하지 않습니다. 나는 지금 브라우저에서 페이지 2에 대한 요청을 보지 않았다. 단지 같은 오류로 PAGE2로 리다이렉트했다. – John

0

를 내가 이해 무슨에서이 방법의 예이 스택 오버플로 질문에 가서 답변

. 누군가 캘린더 이벤트를 클릭하면 다른 페이지를 열려고합니다. 당신이 필요로하는 무엇

는 희망이 도움이

/*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(); 

eventClick

내부에있다. 그런 다음, 숨겨진 input라는 내용으로 <form method='post' action='page2.php?id=....'을 만들이 내용에 숨겨진 입력 값을 채운 후

을 필요로하는 형태가 onClick에 기능을 제출 부를 수처럼

+0

에 설명되어 있습니다. 또한 리디렉션과 함께 POST 데이터를 보내려고합니다. 그러나 이것 이외의 올바른 방법입니다. – creeperdomain

관련 문제