我正在努力学习如何使用诺言。
触发事件并更新页面的内容
我使用下面的内容来触发我的活动并更新页面;
$("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 witch的所有文档中已经在我的代码中实现了
谢谢!