рд╢реБрд░реБрдЖрдд рдореЗрдВ
рдпрд╣ рд▓реЗрдЦ рдЕрдЬрд╛рдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрдЧрд╛ред рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рд░рд┐рдмреВрдЯ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рддреЗрдЬ, рдЖрд╕рд╛рди, рд╕рд╕реНрддреАред рдпрд╣ рдЖрд▓реЗрдЦ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХреЛрдб рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдВрдЧреЗред
рдореИрдВ рдПрдХ рд╕рд╛рдЗрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдШрдЯрдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝реНрд▓реИрд╢ рдкреНрд▓реЗрдпрд░) рд▓рд┐рдВрдХ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЧреАрддреЛрдВ рдХреЛ рдЬрд╛рд░реА рд░рдЦреЗрдВред рдФрд░ рдлрд┐рд░ рдПрдХ рджрд┐рди, рд╕рд╛рд╣рд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж - рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрд╡реЗрджрди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рд▓рдЧрд╛ред рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ - рдиреАрдЪреЗ рдкрдврд╝реЗрдВред
nachnems
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдХреБрдЫ js рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЪрд╛рд╣рд┐рдП - рдЕрд░реНрдерд╛рддреН:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╣реИ
, рдареАрдХ рд╣реИ, рд╢рд╛рдпрдж рд▓рдЧрднрдЧ рд╕рднреА рдХреЛ - рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХред рджреВрд╕рд░реА рдлрд╝рд╛рдЗрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИ, рдЬреЛ jquery рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддрд░рдл рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред Jquery рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЬреЛрдбрд╝ js рд╡рд╕реНрддреБрдУрдВ рдХреЛ json рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП jstemp - рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ jquery-tmpl рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЛрдВрдЧреЗред рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдкреГрд╖реНрда рдЯреЗрдореНрдкрд▓реЗрдЯред Jstemp рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдореБрдЦреНрдп рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдореЗрдВ page.html рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧреА
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕рд░рд▓ HTML рдХреЛрдб рд╣реИ:
<div id="name_of_page">${Content.name}</div> <div id="info_of_page">${Content.info}</div>
рдХрд╛рдо рдХрд╛ рд╕рд╛рд░
рдЙрд╕ рд╕рдордп, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдЕрдЬрд╛рдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд░реНрддрдорд╛рди рд▓рд┐рдВрдХ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ JSON рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдкреНрд░рд╛рдкреНрдд JSON рдХреЛ рдПрдХ js- рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ jquery-tmpl рдкреНрд▓рдЧрдЗрди рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рднреА, рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - рдЕрдЬрд╛рдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреБрд░рдВрдд рдЕрдкрдиреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдЧрд╛ рдФрд░ рд╡рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдЧрд╛, рдХреЗрд╡рд▓ рдирдП рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд╛рдо рдХрд╛ рдирддреАрдЬрд╛ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда рд▓рд┐рдЦреЗрдВ:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script language="Javascript" src="js/jquery-1.5.min.js"></script> <script language="JavaScript" src="js/jquery.tmpl.js"></script> <script language="JavaScript" src="js/jquery.tmplPlus.min.js"></script> <script language="JavaScript" src="js/jquery.json-2.2.min.js"></script> <title></title> <style type="text/css"> body { font: 11pt Arial, Helvetica, sans-serif; margin: 0; } h1 { font-size: 36px; margin: 0; color: #fc6; } h2 { margin-top: 0; } #header { padding: 10px; } #sidebar { float: left; border: 1px solid #eee; width: 20%; padding: 5px; margin: 10px 10px 20px 5px; } #sidebar p { margin-left:20px; } #content { margin: 10px 5px 20px 25%; padding: 5px; border: 1px solid #eee; } #footer { background: #eee; padding: 5px; color: #fff; clear: left; } .error { padding:10px; width:80%;background-color:#ff4f4f; } </style> </head> <body> <div id="header"><h1> - .</h1></div> <div id="sidebar"> <h2></h2> <p><a href="#"></a></p> <p><a href="#page/about"> </a></p> <p><a href="#page/contacts"></a></p> <p><a href="#page/somepage"> - </a></p> <p><a href="#user/login"></a></p> </div> <div id="content"> <h2> - </h2> <div id="content_wrap"></div> </div> <div id="footer">┬й 1</div> </body> </html>
рд╣рдо рдЖрдИрдбреА = "content_wrap" рдХреЗ рд╕рд╛рде рдПрдХ div рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ - рд▓реЛрдб рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдЗрд╕рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдЧрд▓рд╛, рд╣рдо рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
var user = {}; function hash() { return document.location.hash.replace('#',''); } function load(u) { console.log('loading page '+ u +':'); $.ajax({ url: "/" + u,
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдЖрдк рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╕рд░реНрд╡рд░ рдХреЛрдб рд▓рд┐рдЦреВрдВрдЧрд╛:
<?php if(isset($_GET['action'])&&$_GET['action']=='pageLoad'){ switch($_GET['url']) { case 'page/contacts': $arr = array('name'=>'', 'info'=>' , .'); break; case 'page/about': $arr = array('name'=>' ', 'info'=>' .'); break; case 'page/somepage': $arr = array('name'=>' ', 'info'=>' - '); break; case 'main/page': default: $arr = array('name'=>' ', 'info'=>' '); break; } echo json_encode($arr); } else { ?> Html , . <?php } ?>
рдЕрдм, рдЬрдм рдореБрдЦреНрдп / рдкреГрд╖реНрда рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛ - рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдореБрдЦреНрдп рдкреГрд╖реНрда
рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА
рд╣реБрд░реНрд░реЗ! 3/4 рдХрд┐рдпрд╛ред рдЕрдм рд╣рдо рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗред
$("a[href^='#']").unbind('click');
рдФрд░ рдЗрд╕ рдХреЛрдб рдХреЛ рдЙрд╕реА рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред js
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕рд░рд▓ рд╣реИ: html рдкрд╛рда рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреГрд╖реНрдареЛрдВ рдкрд░ рдореМрдЬреВрдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рдкреВрдЫрддреЗ рд╣реИрдВ? рд╣рд╛рдБ рдЖрд╕рд╛рди!
рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / login.html рдмрдирд╛рдПрдБ
рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдб рдбрд╛рд▓реЗрдВ:
{{if Content.error}} <div class="error login">${Content.error}</div> {{else}} <form class="form" id="login" action="" method="POST"> <div class="error" style="display:none;" id="message_login"></div> <table> <tr> <td></td> <td><input name="username[login]" type="text" value="" /></td> </tr> <tr> <td></td> <td><input type="password" name="username[password]" value="" /></td> </tr> <br /> <tr> <td colspan="2"><input value="" style="width: 300px; height: 70px;" type="submit" /></td> </tr> </table> </form> {{/if}}
рдФрд░ рдЙрд╕реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
$('form').submit(function() {
рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛрдб рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:
<?php error_reporting(0); session_start(); if(isset($_POST['username'])){
рдкреГрд╖реНрда рд╕реЗ POST рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХреГрдд рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд╝реЙрд░реНрдо рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВ, рдЕрдиреНрдпрдерд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓реЙрдЧрд┐рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рднреЗрдЬреЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╕рдмрд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдЖрджрд░реНрд╢ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЬрдЧрд╣ рд╣реЛрдиреЗ рдХреЗ рдпреЛрдЧреНрдп рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдФрд░ рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓реЗрдЦ рд╕реНрд╡рдпрдВ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЕрдкрдбреЗрдЯ: рд▓рд┐рдВрдХ рдХреЛ
рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП