function prov(id_knopki){
return jQuery.ajax({ // Будем возвращать deferred-объект
type: "POST",
url: "prov_prav_polz.php",
dataType:"text",
data:{"id_knopki":id_knopki},
cache: false,
// async:false, // это плохо, выкидываем
// эти коллбеки тоже убериаем
// success:function(response){
// alert(response);
// var result_add = response;
// if(result_add=="1") { alert("Операция разрешена"); } else { alert("Операция запрещена"); }
// },
// error:function(xhr, ajaxOptions, thrownError){
// alert(thrownError); alert("Ошибка выполнения скрипта");
// }
})
// Вместо коллбеков будем использовать функциональность deferred объектов
.done(function(response){
alert(response);
var result_add = response;
if(result_add=="1") { alert("Операция разрешена"); } else { alert("Операция запрещена"); }
return response; // Прокинем данные дальше, наружу
})
.fail(function(xhr, ajaxOptions, thrownError){
alert(thrownError); alert("Ошибка выполнения скрипта");
})
;
// return result_add; // неправильно
}
$("#formsubmit").click(function() {
var id_knopki = 100;
prov(id_knopki)
.done(function(response){
if(response=="1") { } else { }
});
});
как-то так оно вроде должно работать... я уж не помню насколько там deferred от промисов отличается.
$.when(prov(id_knopki)).done(function() {
if(result_add=="1") { ... } else { ... }
});
Чтобы это работало, функция должна возвращать тот самый deferred объект:
return $.ajax({...})