2016-09-15 3 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

Google больше о AJAX для этого. –

ответ

0

Хорошо это не совсем ответ, но я думаю, что вам нужно, чтобы понять это:

Ваш PHP генерирует только HTML в течение одной недели. Поэтому, если вы хотите изменить неделю с помощью JS, вам придется генерировать HTML для новых Weeks в JS. Тогда вы можете просто выполнить всю работу в JS.

Другой способ - генерировать более одной недели с помощью php и отображать только один из них. Тогда вы можете скрыть и показать еще одну неделю с JS. Это было бы полезно, если бы вы могли идти туда и обратно на определенное количество недель.

Если вам нужно выбрать неделю без ограничений, вам нужно будет сделать каландр в чистом JS или перезагрузить хотя бы календарную часть страницы.

Do перезагружать только 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

Смежные вопросы