Я работаю над веб-приложением для управления должниками и реорганизую код и пытаюсь придерживаться принципа разделения интересов.Но асинхронная природа AJAX вызывает у меня головную боль.
В диалоговом окне jQuery пользователь может установить флаг для должника, который затем сохраняется в базе данных.Если это успешно, диалоговое окно показывает уведомление.До сих пор я обрабатывал все внутри функции обратного вызова JQuery Ajax success: проверка ввода, выполнение запроса ajax и обновление содержимого диалога.
Конечно, это приводит к коду спагетти.
Таким образом, ясоздал класс AjaxHandler со статическим методом для установки флага, который вызывается диалогом.Я думал, что диалог может обновляться в соответствии с возвращаемым значением AjaxHandler, но я не имел в виду асинхронность.
Следующий вопрос был полезен при рассмотрении возвращаемых значений.
Как вернуть ответ от асинхронного вызова?
Но как я могу обновить диалог, не нарушая принцип SoC?
EDIT
$("#button").on("click", function() {
var returnValue = AjaxHandler.setFlag();
if(returnValue) { $("#div").html("Flag set"); }
else { $('#div").html("Error setting flag");
});
class AjaxHandler {
static setFlag(){
$.ajax({
type: "POST",
url: "ajax/set_flag.php",
success: function(returndata){
return returndata; //I know this does not work because of
//ASYNC,but that is not the main point.
}
}
})