Оптимицация множественных &.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, время: 01:16. |