Оптимицация множественных &.ajax()
function openNotepad()
{
var npid = $(this).attr('id');
$.ajax({
type: "POST",
data: "open=ok&npid=" + npid,
url: "/modules/notepad/module.php",
success: function(data)
{
$("body").append('<textarea class="notepad' + npid + ' notepadDialog"></textarea>');
$('.notepad' + npid).text(data).dialog({ dialogClass: npid, width: 650, height: 450, title: "БЛОКНОТ", closeText: "✖", resizable: true,
close: function(event, ui) {$(this).dialog('destroy').remove()},
});
}
});
}
function saveNotepad()
{
var npid = $(this).attr('class');
$.ajax({
type: "POST",
data: "saveAs=ok&name=" + name + "&text=" + text,
url: "/modules/notepad/module.php",
success: function(data)
{
$('#page').append(data);
$('#page>div').last().fadeIn();
}
});
}
Всем привет. На сайте много таких функций. По сути в каждой меняется только data и success. Как правильно их объединить(или оптимизировать, не знаю как правильно сказать), чтобы не приходилось каждый раз писать все что не относится к data и success. |
А я вижу что по сути не_меняется только type и url )))
причем если использовать $.post, то тайп указывать не придется. А url можно в переменную вывести. И это не оптимизация (от всех этих перестановок код быстрее работать не станет), это - рефакторинг. |
zzzzzz,
Можно вынести повторяющую часть в отдельную функцию, остальное передавать как параметры в нее.
function req(data, success)
{
$.ajax({
type: "POST",
data: data,
url: "/modules/notepad/module.php",
success: success
});
}
function openNotepad()
{
var npid = $(this).attr('id');
req("open=ok&npid=" + npid, function(data)
{
$("body").append('<textarea class="notepad' + npid + ' notepadDialog"></textarea>');
$('.notepad' + npid).text(data).dialog({ dialogClass: npid, width: 650, height: 450, title: "БЛОКНОТ", closeText: "✖", resizable: true,
close: function(event, ui) {$(this).dialog('destroy').remove()},
});
});
}
function saveNotepad()
{
var npid = $(this).attr('class');
var data = "saveAs=ok&name=" + name + "&text=" + text;
req(data, function(data)
{
$('#page').append(data);
$('#page>div').last().fadeIn();
});
}
|
| Часовой пояс GMT +3, время: 04:47. |