Нужен совет.
Встала необходимость как-то усовершенствовать мою технику создания Ajax-интерфейса. Загрузка страниц не "аяксовая". А вот контент на странице подгружаемый.
Делаю обычно так:
js, jquery - код в файле main.js. Он подключен в главном контроллере index.php (контроллером называю условно, шаблон проектирования не MVC). Т.е., фактически, присутствует на каждой странице.
Обработка кода - обработчик controller.php
В main.js нужные обработка действий происходит примерно так:
$(document).on('click', ".element", function () {
$.ajax({//fetch the article via ajax
type: "POST",
url: "/scripts/php/obr/controller.php",//calling this page
data: 'object=get_login_form',
beforeSend: function() { // add the loadng image
$('button').attr('disabled', true);
$('.main_spinner').fadeIn('fast', function() {
// Animation complete
});
$(this).attr('data-loading-text','Ожидайте...');
},
success: function(data){
$('.main_spinner').fadeOut('fast', function() {
// Animation complete
});
var obj = eval("(" + data + ")"); // Получаю данные от обработчика
if(obj.succeed == 'no'){
$('button').attr('disabled', false);
$.jGrowl(obj.mes, { header: 'Ошибка' , theme: 'um', position: 'mc'});
}
else {
$(".insert_content").html(obj.mes);
}
}
});
});