2011-09-15 6 views
0

나는 David Walsh's calendar 함수를 사용하여 WordPress 테마로 이벤트 캘린더를 만들고 있습니다. 저는 AJAX로 달 사이를 이동하고 싶지만 익숙하지 않고 월 및 연도 변수를 게시하고 가져 오는 데 문제가 있습니다. 이 AJAX video tutorial을 참조하고 있습니다.jQuery AJAX로 PHP 달력 개월을 이동하십시오

function swapContent(month,year) { 
     jQuery("#calendar").html("<img src='images/ajax-loader.gif'>").show(); 
     var url="calendar.php"; 
     jQuery.post(url, {contentVar: month, year}, function(data){ 
      jQuery("#calendar").html(data).show(); 
     }); 
    } 

calendar.php에서 : 페이지 템플릿의 상단에

,이 기능이

$month = (int) ($_GET['month'] ? $_GET['month'] : date('m')); 
    $year = (int) ($_GET['year'] ? $_GET['year'] : date('Y')); 

    $contentVar = $_POST['month']['year']; 

을 그리고 내 이전/다음 달의 제어는 다음과 같다 :

$previous_month_link = '<a href="?month='.($month != 1 ? $month - 1 : 12).'&year='.($month != 1 ? $year : $year - 1).'" class="control" onClick="return false" onmousedown="javascript: swapContent("month", "year")">Previous Month</a>';

여기 내 모든 calendar.php 파일 : http://pastebin.com/R9zpA3yM

미리 감사드립니다. 도움을 주시면 감사하겠습니다.

답변

1

정확하게 월 및 연도를 설정하는 것처럼 보이지 않습니다. "month"와 "year"를 문자열로 전달한 다음 PHP 스크립트에 전달할 올바른 매개 변수 이름으로 설정하지 않습니다. 이 시도 : 당신의 PHP에서 다음

function swapContent(monthVal,yearVal) { 
    jQuery("#calendar").html("<img src='images/ajax-loader.gif'>").show(); 
    var url="calendar.php"; 
    jQuery.post(url, {month: monthVal, year: yearVal}, function(data){ 
     jQuery("#calendar").html(data).show(); 
    }); 
    return false; 
} 

을 :

$monthVal = ($month != 1 ? $month - 1 : 12); 
$yearVal = ($month != 1 ? $year : $year - 1); 

$previous_month_link = '<a href="?month='.$monthVal.'&year='.$yearVal .'" class="control" onClick="swapContent("'.$monthVal.'","'.$yearVal.'");">Previous Month</a>'; 

보다는 사용 onmousedown가 난 그냥 onclick의 기능을 할 것이다, 단지 확인은 함수의 끝에서 false를 반환하게하는 I 포함되어 있습니다.

나는 월, 년 contentVar의 모든 PHP 스크립트에서 어떻게 사용되고 있는지 확실하지 않다, 그래서 다음은 가정이다, 그러나 당신이 단지의 라인을 따라 뭔가해야 것 같습니다 :

$month = (int) ($_POST['month'] ? $_POST['month'] 
           : ($_GET['month'] ? $_GET['month'] 
                : date('m'))); 

$year= (int) ($_POST['year'] ? $_POST['year'] 
           : ($_GET['year'] ? $_GET['year'] 
                : date('Y'))); 

그런 다음 해당 변수를 사용하여 데이터를 가져 옵니까?

+0

감사합니다. 아직 작동시키지 못했습니다. 내 calendar.php 파일은 다음과 같습니다. http://pastebin.com/R9zpA3yM. 나는 컨트롤이'

'과''태그 (148 행) 안에있는 페이지에 울려 퍼지는 것을 보았습니다 - 나는 그것들을 단 하나의 링크로 만들었지 만 주사위는 만들지 않았습니다. 또한 이전 및 다음 달 탐색을 위해'prevMonthVal' 및'nextMonthVal'에 대한 변수가 필요합니까? 다시 한번 감사드립니다. – notlaura

+0

오, ''에 대해 신경 쓰지 마라. 나는 또한 콘솔에서이 에러를 얻고있다 : Uncaught SyntaxError : 예기치 않은 토큰 :: 8888/onlyinpgh/calendar /? month = 8 & year = 2011 : 11'. 감사. – notlaura

+0

오 예, 당신의 링크는 앞서 설명한 것처럼'prevMonthVal'과'nextMonthVal'을 참조 할 필요가있을 것입니다. 귀하의 자바 스크립트 오류에 대해 잘 모르겠지만, 그것이 예상하지 못했습니다 :. URL에서 불법 문자 인 끝에 2011 : 11이라고 추후에 인용 된 줄을 보면 % : 3A로 인코딩되어야합니다 – Kasaku

관련 문제