Я пытаюсь научиться использовать обещание.
Что запускает событие и обновляет страницу
Я использую это ниже, чтобы вызвать мое событие и обновить страницу;
$("body").on("change", "input, select", function () {
var field_id = ($(this).attr("id"));
var container = ['#' + field_id + "_ck", '#' + field_id + '_err'];
var data_type = ($(this).attr("data-type"));
var value = document.getElementById(field_id).value;
var data = validateInput(field_id, data_type, value);
if (data[0] == 'true') {
$(container[1]).addClass("pass_f");
$(container[1]).html(data[2]);
$(container[0]).html(data[1]);
}else {
$(container[1]).removeClass("pass_f");
$(container[1]).addClass("err_f");
$(container[1]).html(data[2]);
$(container[0]).html(data[1]);
}
});
Что делает validateInput ()
Функция validateInput возвращает массив данных для пользователя, чтобы исправить информацию и его следующим образом;
function validateInput(field_id,data_type,value){
var a = 0;
var b = 1;
var c = 2;
var data = [];
if (data_type == 'username'){
n = value.length;
if(n < 5 | n > 15){
data[a] = "false";
data[b] = "some html";
data[c] = "The error msg regarding this field length";
return data;
}
// the code below would fit here
}
Теперь в чем моя проблема
Эта функция db_check запускается после обновления страницы
function db_check(field_id, data_type, value, callbackFn) {
$.ajax({
url: 'ajax-php.php',
type: 'post',
dataType: 'json',
data: { 'db_check': 'true', 'field_id': field_id, 'value': value, 'data_type': data_type },
success: function (data2, status) {
callbackFn(data2);
// data2 is true or false
},
// in case of error
}
});
};
А потом, когда я использую эту функцию db_check
db_check(field_id, data_type, value, function callbackFn(data2){
if (data2 == 'false') {
data[a] = "false";
data[b] = "some html";
data[c] = "its not ok";
return data;
}
else if (data2 == 'true') {
data[a] = "true";
data[b] = "some html";
data[c] = "Its ok.";
return data;
}
});
Как мне реализовать обещание в моем коде
Массив данных заполняется правильными значениями только после обновления страницы. Так что мне интересно, где обещание должно быть?
Должен ли он идти с validateInput вместо этого? лайк;
Я так растерялся во всем этом и был бы очень признателен, чтобы хотя бы понять, как использовать обещание.
пожалуйста, обратите внимание
все данные, возвращаемые этой функцией, уже являются массивами json. Я заметил, что во всей документации, которую они используют, JSON ведьма уже реализована в моем коде
Спасибо!
Задача ещё не решена.
Других решений пока нет …