/ / Загортання діалогу підтвердження js у функції успіху jQuery ajax - jquery

Перенесення діалогового вікна js confirm у jQuery функцію успіху ajax - jquery

У мене проста вимога відображати JSпідтвердження діалогового вікна залежно від динамічного значення. Це значення можна змінити за допомогою AJAX на веб-сторінці, тому неможливо жорстко зафіксувати його під час завантаження сторінки, тому я використовую jQuery.ajax (), щоб захопити його, коли onClick у разі запуску. Наприклад.

Зауважте, що виклик AJAX повертає правильне значення.

HTML

    <a href="{% url program_pdf object.id %}" onClick="return check_time_budget();">
Download PDF
</a>

JS

    function check_time_budget() {
return jQuery.ajax({
url: "/program/check_duration/",
data: { "program_id": {{ instance.id }} },
success: function(response) {
console.log(response);
if (response.result != true){
return confirm("Your program estimated duration does not match the time allocated. Is this OK?");
}
else {
return true;
}
},
error: function() {
return false;
}
});
}

Я познайомився з віддачею, встановити вар тощо, але, здається, не можна отримати функцію завершеного успіху, щоб успішно повернути потрібне значення тегу A.

Чи є простий спосіб досягти того, що я хочу досягти?

Редагувати: Я повернувся до використання Dajaxice та злому з SetTimeout

HTML

onClick="return dajaxice_wrapper(this, {{object.id}});"

JS

    var callback_status;
function dajaxice_check_time_budget(data) {
var msg = "Your program estimated duration does not match the time allocated.nnIs this OK?n";
if (data.result == true) {
callback_status = true;
}
else {
callback_status = confirm(msg);
}
}

function dajaxice_wrapper(obj, program_id) {
callback_status = false;
Dajaxice.programcreator.check_time_budget(dajaxice_check_time_budget, { "id": program_id });
// Required to get callback_status set from dajaxice callback (asynchronous call via ajax)
setTimeout(function() {
if ( callback_status != undefined ) {
if ( callback_status == true ) {
window.location = obj.href;
}
};
}, 500);
return callback_status;
}

Відповіді:

0 для відповіді № 1

Я можу придумати один із підходів:

<a id="download-trigger" href="{% url program_pdf object.id %}" onClick="return check_time_budget();">Download PDF</a>

function check_time_budget() {
return jQuery.ajax({
url: "/program/check_duration/",
data: { "program_id": {{ instance.id }} },
success: function(response) {
console.log(response);
if (response.result != true){
return confirm("Your program estimated duration does not match the time allocated. Is this OK?");
}
else {
// This will start to load the pdf.
window.location = jQuery("#download-trigger").attr("href");
}
},
error: function() {
return false;
}
});
}