Скрипт загрузки контента с помощью Ajax, JavaScript (location.hash) и PHP. В чем его минусы?

JavaScript:
$(window).on('hashchange', function(){
	var u = location.hash.replace('#/','');
	if( u == '' ) return false;
	
	$.ajax({
		url: '/?src='+u, dataType: 'html', async: false,
		success: function(html){ $('#content').html(html); }
	});
});


И сам index.php файл:
if( empty($_GET['src']) ){ include 'template.php'; exit; }

$src = $_GET['src'];
while( $src[0] == '/' ) $src = substr( $src, 1, strlen($src) );
while( substr( $src, strlen($src)-1, 1 ) == '/' ) $src = substr( $src, 0, strlen($src)-1 );
$src = explode('/', $src);

$f = 'pages/'.$src[0].'.php';
if( is_file($f) ){ include $f; exit; }		// file
include 'pages/404.php'; exit;			// 404 not found
  • Вопрос задан
  • 295 просмотров
Пригласить эксперта
Ответы на вопрос 1
Apathetic
@Apathetic
Frontend
Самый главный минус заключается в том, что с отключенным JS контент не увидеть никак.
Остальные проблемы, в общем-то, типичны для подобных решений (в частности - hashbang): отсутствие семантики, проблемы с расшариванием в соцсетях, проблемы с индексированием и так далее.
По сути, нужно решить две вещи: первая - при переходе по ссылке сразу отдавать нужный контент, без всяких аяксов. Вторая - строить нормальные урлы, без всяких левых хешей и прочих хаков. Для этого существует History API, которое, в принципе, уже неплохо поддерживается (caniuse.com/history).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы