Не записывается переменная success ajax
Подскажите пожалуйста, почему не записывается переменная из success ajax:
function check() {
var mail_check;
$.ajax({
type: "POST",
url: "/mail_check.php",
data: {
},
success: function(html) {
mail_check = 1;
}
});
if (mail_check === 1) {
/*code*/
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="button" onclick="check();" value="go">
Ответы (3 шт):
Автор решения: Igor
→ Ссылка
Асинхронность.
...
success: function(html) {
mail_check = 1;
console.log("success", mail_check);
},
complete: function() {
console.log("complete", mail_check);
if (mail_check === 1) {
/*code*/
}
}
});
Автор решения: Vadim
→ Ссылка
Либо банально добавь в код ажакса async: false,, либо снизу человеческий способ
В начале(на 1 строке) файла, который с функцией
const apost=(_url, _data={})=>{
return new Promise((resolve)=>{
$.ajax({
url: _url,
type: 'POST',
data: _data,
async: true,
}).done((r)=>{
if(!r)r = false;
resolve(r);
}).catch((e)=>{
console.log(e.status, e.responseText, e);
resolve(false);
});
});
};
В своей функции вызываешь:
(async()=>{
let r = await apost('/mail_check.php', {data: 'yes'});
console.log('response', r);
})();
асинхронная функция выглядит\создается так:
const func_name=async()=>{ /* code */ };
Автор решения: Владислав Самохин
→ Ссылка
function check() {
var mail_check;
$.ajax({
type: "POST",
async: false,
url: "/mail_check.php",
data: {
},
success: function(html) {
mail_check = 1;
}
});
if (mail_check === 1) {
/*code*/
}
}