Выполнение Javascript перед получением результата при вызове ajax

У меня есть следующий код, который отображает данные сеанса. Проблема сталкивается, даже если сессия имеет значение, и ajax получает эти данные, предупреждение, которое я поставил ниже вызова функции getValFromSession (qes), всегда показывает нулевые данные. Я думаю, что это из-за асинхронного выполнения ajax с помощью javascript. Поэтому я добавляю дополнительный код, как показано в функции
getValFromSession (qid). Как я могу преодолеть эту асинхронную проблему?

var qes=$('#qsid_'+q).val(); var res=getValFromSession(qes); alert(res);//always shows null value $('#select_'+).val(parseInt(res)); function getValFromSession(qid) { return $.ajax({ url : site_url_js+"controller/getValFromSession", type : "POST", data : "qid="+qid, cache: false, async: false }).responseText; } /*controller*/ function getValFromSession() { echo $_SESSION['time'][$_REQUEST['qid']]; } 

Попробуй это:

 var qes=$('#qsid_'+q).val(); var res=getValFromSession(qes); function getValFromSession(qid) { $.ajax({ url : site_url_js+"controller/getValFromSession", type : "POST", data : "qid="+qid, cache: false, async: false, success: function(data) { alert(data); // alert here in successHandler $('#select_'+).val(parseInt(data)); } }) } /*controller*/ function getValFromSession() { echo $_SESSION['time'][$_REQUEST['qid']]; } 

Надеюсь это поможет.

$.ajax предоставляет вам success , error и complete обработчики обратного вызова. Заполняйте текст ответа в тех обработчиках, потому что способ, которым вы реализовали, является синхронным и будет выполняться немедленно, а не после завершения запроса.

Документы

Вы можете поместить свой код в функцию и вызвать эту функцию при успешном событии AJAX, как показано ниже

 --- --- return $.ajax({ url : site_url_js+"controller/getValFromSession", type : "POST", data : "qid="+qid, false, async: false, success: finalfunction --- --- function finalfunction(res) { alert(res);//always shows null value $('#select_'+).val(parseInt(res)); }