2016-09-15 5 views
0

アイデアはページを更新せずにカレンダーを読み込むことです。何が間違っているのですか? Calendar.php簡単なPHPカレンダーにJqueryを追加する

<?php 
$year = (isset($_POST['year'])) ? $_POST['year'] : date("Y"); 
$week = (isset($_POST['week'])) ? $_POST['week'] : date('W'); 
    if($week > 52) { 
    $year++; 
    $week = 1; 
    } elseif($week < 1) { 
    $year--; 
    $week = 52; 
    } 
?> 

<table id="calenderWeek" border="1px"> 
<tr> 
<?php 
    $week = $_GET['week']; 
    if($week < 10) { 
     $week = '0'. $week; 
    } 
    for($day= 1; $day <= 7; $day++) { 
     $d = strtotime($year ."W". $week . $day); 
     echo "<td>". date('l', $d) ."<br>". date('d M', $d) ."</td>"; 
    } 
?> 
</tr> 
</table> 

のindex.php

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>load demo</title> 
<script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<div id="target"> 

</div> 

<script> 
function load(week, year) { 
$("#target").load("calender.php #calenderWeek", {"week":week, "year":year}  );} 
</script> 

アイデアは、ページを更新せずにカレンダーをロードすることである:それは空白のページに

外部ファイルを示します。何が間違っているのですか?それは

+1

GoogleのこのためのAJAX詳細については。 –

答えて

0

は、[OK]を、これは本当に答えではない空白のページを示す、しかし、私はあなたがこれを理解する必要があると思う:

あなたのPHPは一週間のためにHTMLを生成します。したがって、JSで週を変更したい場合は、JSの新しいWeeksのHTMLを生成する必要があります。その後、JSですべての作業を行うことができます。

もう1つの方法は、phpで1週間以上生成し、そのうちの1つだけを表示することです。 その後、JSで別の週を非表示にすることができます。 これは、一定の期間だけ前後に行くことができる場合に便利です。

制限なしで1週間を選択する必要がある場合は、純粋なJSでカレンダーを実行するか、少なくともページのカレンダー部分をリロードする必要があります。

あなたはそれで唯一のカレンダー世代で新しいサイトを作成する必要があり、唯一のcalnderの一部をリロードしてください:

calender.php

<?php 
$year = (isset($_POST['year'])) ? $_POST['year'] : date("Y"); 
$week = (isset($_POST['week'])) ? $_POST['week'] : date('W'); 
if($week > 52) { 
    $year++; 
    $week = 1; 
} elseif($week < 1) { 
    $year--; 
    $week = 52; 
} 
?> 
<table id="calenderWeek" border="1px"> 
<tr> 
    <?php 
     $week = $_GET['week']; 
     if($week < 10) { 
      $week = '0'. $week; 
     } 
     for($day= 1; $day <= 7; $day++) { 
      $d = strtotime($year ."W". $week . $day); 
      echo "<td>". date('l', $d) ."<br>". date('d M', $d) ."</td>"; 
     } 
    ?> 
</tr> 
</table> 

それからちょうどページ上のdivにそれをロードしますあなたはそれをしたい場所:

<script> 
function loadWeek(week, year) 
$("#target").load("/calender.php #calenderWeek", {"week":week, "year":year}); 

/* Here call the function on page loading...*/ 
$(document).ready(loadWeek(2,2016)); 

</script> 

あなたがdocument.ready上で、ボタンのクリックで呼び出すことができる、とだけ#calenderWeekからコンテンツを取得し、内部の目にそれを置くことロード機能電子の#target divの詳細については

<div id="target"> 

</div> 

は、ロード機能を見てみましょう: http://api.jquery.com/load/#loading-page-fragments

+0

を使ってそれを操作することができますので、ページ全体の代わりにdivだけを更新してください@DoktorOSwaldo – Leednetz

+0

もちろん、私はそれは読み込み中ですが、とにかくありがとう、私は答えを更新します。 –

+0

@DoktorOSwaldo – Leednetz

関連する問題