2016-09-15 55 views
0

这个想法是加载日历而不刷新页面。我究竟做错了什么?它显示一个空白页面将jquery添加到简单的PHP日历

外部文件:Calendar.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> 

的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

谷歌更多关于AJAX这一点。 –

回答

0

确定这是不是一个真正的答案,但我认为你需要明白这一点:

你的PHP只生成HTML一周。所以如果你想用JS改变星期,你将不得不为JS中新的Weeks生成HTML。然后你可以在JS中完成所有的工作。

另一种方法是用php生成超过一个星期,并且只显示其中一个。 然后你可以隐藏和显示JS的另一周。 如果你只能周而复始地回来,这将会很有用。

如果您需要选择一个星期没有限制,您将不得不在纯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 id="target"> 

</div> 

欲了解更多信息看一看负载的功能: http://api.jquery.com/load/#loading-page-fragments

+0

是否可以使用

来操作它,以便div只是刷新而不是整个页面@DoktorOSwaldo – Leednetz

+0

当然是,但是对于我来说它正在重新加载,但是无论如何谢谢你,我会更新答案。 –

+0

无法让它工作@DoktorOSwaldo – Leednetz