Ajax aysnc запрос в JS
Привет,
Я использую эту функцию, чтобы получить некоторые данные из БД и сохранить результат в классе stripLayout. Однако проблема заключается в том, что во время первого запуска класс остается пустым, поэтому я ввел async: false и решил эту проблему.
Но я читал, что это не правильный способ сделать это, и вместо этого можно использовать "обещание". Я не мог найти способ, который заставляет этот код работать, когда я пытался сделать такое изменение. Кто-нибудь может мне помочь, пожалуйста?
function getStripLayoutsDetails(){ $.ajax( 'admnStripLayouts_getStripLayoutDetails.php', { async: false, type: 'POST', data: { LayoutName: $('#aSL_stripLayoutsList').val() }, success: function (result) { stripLayout = { layoutName:result.stripLayoutDetails[0].LayoutName, version:result.stripLayoutDetails[0].Version }; if(result.status == "Error"){ displayError(result.detail, 'Error Retrieving Strip Layout Details', 'critical'); return; } }, error: function (resp, status, xhr) { displayError('Valid Value lookup request to server failed', 'Lookup Error', 'critical'); } }); }
Что я уже пробовал:
Попробовал это изменение, однако оно ведет себя так же, как и при отсутствии асинхронности: false
function getStripLayoutsDetails(){ $.ajax( { url: "/admnStripLayouts_getStripLayoutDetails.php" , type: 'POST', data: { LayoutName: $('#aSL_stripLayoutsList').val() } }) .done(function(getStripLayoutsDetails) { stripLayout = { layoutName:getStripLayoutsDetails.stripLayoutDetails[0].LayoutName, version:getStripLayoutsDetails.stripLayoutDetails[0].Version }; }).fail(function(e) { displayError('Valid Value lookup request to server failed', 'Lookup Error', 'critical'); }).always(function() {} ); }
Karthik_Mahalingam
вы не возвращаете никаких данных, так почему же вам нужно использовать async: false,
bmw318mt
Да я получаю результат как объект и храню его в классе
Karthik_Mahalingam
использовать Ответить кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.
Karthik_Mahalingam
в чем именно заключается проблема?
есть ли проблема с асинхронностью или с чем-то другим?
bmw318mt
У меня есть список, а затем, когда я нажимаю на элемент, я получаю информацию, вызывая эту функцию. При запуске я инициализирую открытый класс, когда я щелкаю элемент в списке, я вызываю эту функцию, которая заполнит класс. Проблема в том, что первый элемент, который я нажимаю на класс, все еще пуст, затем я нажимаю на другой элемент, и класс будет содержать информацию, относящуюся к ранее нажатому элементу.
Karthik_Mahalingam
вы положили debugger
и проверил в chrome console ?