Показать сообщение отдельно
  #9 (permalink)  
Старый 13.08.2014, 23:44
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Попробуй с вот таким файлецом:

// тут подгружается шаблон сайта
ajax('template.html', function(answer) {
    document.body.innerHTML = answer;
	if (location.pathname != '/') {
		// этот код сработает, если url не ведёт на главную страницу
		load(location.pathname);
	}
});

// для навигации по истории
window.onpopstate = function() {
    load(location.pathname);
};

// обработчик ссылок
window.onclick = function (e) {
    var target = e.target;
    var path = obj.getAttribute('data-href');
    if (path) {
	    e.preventDefault();
        load(path);
        history.pushState(null, null, path);
    }
};

// обрабатываем path в рабочую ссылку и делаем запрос на сервер
function load(path) {
	var index = path.split('/').reverse()[0];
    var fullPath = '/page' + path + '/' + index + '.html';
    ajax(fullPath, function(answer) {
        document.getElementById('content').innerHTML = answer;
    });
}

function ajax(url, func) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open('post', url, true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
			// тут обработаются ошибки при ajax запросах
            switch (xmlhttp.status) {
	            case 200:
	                func(xmlhttp.responseText);	
	                break;
	            case 401:
	                alert('401');
	                break;
	            case 403:
	            case 404:
	                alert('404');
	                break;
	            case 500:
	                alert('500');
	                break;
            }
        }
    }
    xmlhttp.send();
}
Ответить с цитированием