defunktçpjaxã®èª¬æ
pjaxã¨ã¯Ajaxã§ã³ã³ãã³ããå
¥ãæ¿ããã®ã¨åæã«URLã夿´ãã¦ãããjQueryã®ãã©ã°ã¤ã³ã®ååã§ãã
Githubã®ãããªã¹ã ã¼ãºã§ã¤ã±ã¦ããã¼ã¸é·ç§»ãè¡ãã¾ãã
javascriptã®ãpushStateããªã©ã®æ°ãããã¹ããªã¼é¢æ°ã¨Ajaxããµã¼ãã¼ãµã¤ãã¹ã¯ãªãããçµã¿åããã¦ä½ããã¦ããã®ã§å®éã¯jQueryãã©ã°ã¤ã³ãããªãã¦ãå®è£ ã¯å¯è½ã§ããå®éãã®æè¡ããªãã¨å¼ã°ããã®ãã¯ãããã¾ããããã¨ããããpjaxï¼pushState + ajax = pjaxï¼ã§æµ¸éãã¦ãã¿ããã§ããChromeãFirefoxãIE10以éãªã©ã®ãã©ã¦ã¶ã§åä½ããé対å¿ã®ãã©ã¦ã¶ã§ã¯é常ã®ãã¼ã¸é·ç§»ããã¾ãã
PHPã§ä½ãããç´ æµãªCMSããã ã¨pjaxãé常ã«ç°¡åã«å®è£ ã§ãã¾ãã
- ãã¦ã³ãã¼ã
- jQuery.pjax.jsã®åºæ¬çãªä½¿ãæ¹
-
ãµã¼ãã¼å¦çã使ããéçãµã¤ãã§æè»½ã«pjaxãã¦ã¿ã
- pjaxã«å¯¾å¿ããHTMLãæ¸ã
- åãæ¿ãã¨ãã§ã¯ãã®ä»ãæ¹
- pjaxã®ã¤ãã³ã
- UTF-8以å¤ã®æååã対ç
-
ãè¨å®ããã¦ããææåããããããªãå¯¾å¦ - 䏿¹éè¡ã«ããå ´åã®Chrome対ç
ãã¦ã³ãã¼ã
jQueryæ¬ä½ã¨ãjquery.pjax.jsããã¦ã³ãã¼ããã¾ãã
9æä»¥éã®ãã¼ã¸ã§ã³(Verãæ¸ãã¦ãªããã©Ver1.0ããããã)ã§ã¯APIãå¤ãã£ã¦ãã¾ãã以ä¸ã¯ææ°çã®æ¸ãæ¹ã§ãã
jQuery.pjax.jsã®åºæ¬çãªä½¿ãæ¹
ãµã¼ãã¼ãµã¤ãã®å¦çã«PHPã使ã£ãå ´åã®é·ç§»ã¯ä»¥ä¸ã®æ§ãªæãã«ãªãã¾ãã
ãã¾ãã¡åããã«ããã¦ãã¿ã¾ãã(´ã»Ïã»)
1.0ããè²æ¸¡ã§ã¤ãã³ããçºçããã¦ãããããªã®ã§ããªã³ã¯ã®è¦ªè¦ç´ ãã¤ãã³ãçºçæºã«ãã¾ããï¼documentãbodyãªã©ï¼jQueryæ¬ä½ã¨jquery.pjax.jsãèªã¿è¾¼ãã§ãdocumentã$(document).readyã§è¦ªè¦ç´ ã«å¯¾ãã¦pjaxãå²ãå½ã¦ã¾ãã
$(document).pjax('a.pjax', '#pjaxContent');
documentã®ä¸ã«ããpjaxã¨ããã¯ã©ã¹åãä»ãããªã³ã¯ãã¯ãªãã¯ããã¨#pjaxContentãå ¥ãæ¿ããã¾ãã
pjaxãããããã¼ï¼ã¾ãã¯ãã©ã¡ã¼ã¿ï¼ä»ãã®Ajaxãªã¯ã¨ã¹ããçºçããã®ã§ãPHPãªã©ã使ã£ã¦ããããã¼ã®X-PJAXãtrueã®å ´åã¯ã³ã³ããé¨åã ããåºåãããã¨ããæ¡ä»¶ã§åçã«HTMLåºåããããã«ãã¾ããPHPã®getallheaders()颿°ã使ç¨ã§ããªãå ´åã¯$_GET['_pjax']ã§å¤å®ããäºãã§ãã¾ãã
$header = getallheaders();
if ($header['X-PJAX']) {
 // pjaxãªã¯ã¨ã¹ãã®å ´åã®å¦çï¼ã³ã³ããå ã®HTMLã ãåºå
} else {
 // pjaxãªã¯ã¨ã¹ããããªãå ´åã®å¦çï¼å ¨ã¦ã®HTMLãåºå
}
?>
ãµã¼ãã¼å¦çã使ããéçãµã¤ãã§æè»½ã«pjaxãã¦ã¿ã
jquery.pjax.jsã«çµæã®ä¸é¨ãæ½åºã§ãããfragmentããã©ã¡ã¼ã¿ãç¨æããã¦ããã®ã§ãããã使ç¨ããäºã§ãµã¼ãã¼å´ã®å¦çã使ããã«éçHTMLã§pjaxãå®è£ ãããã¨ãåºæ¥ãããªã®ã§è©¦ãã¦ã¿ã¾ããã
ãµã¼ãã¼å¦çã使ããã«ãfragmentãã ãã§å®è£ ããå ´åã®é·ç§»ã¯ç°¡åã«èª¬æããã¨ä»¥ä¸ã®ããã«ãªãã¾ãã
Ajaxã§å ¨ã¦ã®ãã¼ã¸å 容ãåå¾ãããã¨ã«å¿ è¦ãªé¨åã ããåãåºãã¾ãã
ãµã¼ãã¼ãµã¤ãã®ã¹ã¯ãªããã使ã£ã¦å¿ è¦ãªé¨åã ãåãåãã®ã¨éã£ã¦ãå ¨ã¦åãåã£ã¦ããå¿ è¦ãªé¨åã ããæãåºããã転ééçã«ã¯é常ã®é·ç§»ã¨å¤ããã¾ããã使é度ã¯å²ãã¨æ©ããªãã¾ãããæ¤ç´¢ã¨ã³ã¸ã³ã©ã¤ã¯ãªã®ã§ãCMSã¨ã使ã£ã¦ãªããã©ã¨ãã§ã¯ãã¨ããã¼ãã£ã³ã°ã¨ãå ¥ãã¦ããããããµã¤ããä½ããããã¨ããå ´åã«ã¯å®è£ ãã¦ã¿ãã®ãè¯ããã...ï¼
ã¡ãªã¿ã«ãfragmentã¯ãµã¼ãã¼å¦çããã¤ã¤ããã«æ½åºããã¨ãããã¨ããã¡ããåºæ¥ã¾ããä¾ãã°MODXã®contentå ã®ä¸é¨ãpjaxã§é·ç§»ãããã¨ããäºãå¯è½ã§ããï¼Dittoã®è§£èª¬ãã¼ã¸ããã��æãã«ãªã£ã¦ãã¾ãï¼
pjaxã«å¯¾å¿ããHTMLãæ¸ã
é·ç§»ããããã³ã³ãã³ããé©å½ãªIDã以ä¸ã¯ãpjaxContentãã¨ããIDã§å²ã¿ã¾ãã
pjaxã«å¯¾å¿ãã¦ããå ´åãã®ä¸ã ããé·ç§»å
ã®IDã®ä¸èº«ã¨å
¥ãæ¿ããã®ã§ãpjaxå
ã¨pjaxå
ã®ãã¼ã¸ã§ã¯ãã®IDã®ã³ã³ãããåå¨ããããã«ãã¦ããã¾ãã
$(document).pjax('a.pjax', { container:'#pjaxContent', // ç½®ãæããã³ã³ããã®ID fragment: '#pjaxContent' // åãåºãã³ã³ããã®ID ç¸äºã«é·ç§»ãããå ´åã¯containerã¨åããã® });
é·ç§»å ï¼çºç«ç¹ï¼ãpage1ãã®HTML
page1 pjaxãã¹ã