Сабж. Насколько такой подход уместен в JS? Какие могут быть проблемы?
var popupObject = {
// URL обработчика
url: null,
// Данные для запроса
data: {},
// Функция, которая будет выполнена в случае выполнения запроса
success: function(data, textStatus, jqXHR){
// Пустая функция, не надо сюда ничего писать
},
/**
* Конструктор объекта.
*
* @param string url путь к обработчику запроса
* @param object data данные для запроса
* @param function success функция, которая выполнится в случае выполнения запроса
* @return object this
*/
constuctor: function(url, data, success){
this.url = url;
this.data = data !== undefined ? data : this.data;
this.success = success !== undefined ? success : this.success;
return this;
},
/**
* Основной метод, выполняющий запрос, прорисовывающий данные из ответа и
* исполняющий метод success
*/
run: function() {
$j.ajax({
type: "POST",
url: this.url,
data: this.data,
cache: false,
context: this,
success: function(data, textStatus, jqXHR){
if (data.status.toLowerCase() === 'ok') {
this.embed(data);
this.success(data, textStatus, jqXHR);
} else {
if (window.console && window.console.log) {
// console.log(data);
}
}
}
});
},
/**
* Метод, выполняющий вставку данных из ответа куда-либо.
* В нашем случае - в попап.
* Данный метод можно перегрузить и вставлять данные куда угодно, в любое мето в DOM-дереве.
*
* @param array data response данные
*/
embed: function(data) {
var unique_id = 'unique_' + this.rand();
var full_id = unique_id + '_for_popup';
$j('<div id="' + full_id + '" style="display:none"></div>').appendTo('body').append(data.content);
openStaticPopup(unique_id);
$j('#' + full_id).remove();
},
rand: function() {
return Math.floor(Math.random() * 1000);
}
};