一开始想让AJAX执行成功后,根据返回值,再判断往下执行的逻辑。
后来发现,jquery的ajax成功返回的值,不能通过return(像子函数返回值)把值传回上一级的函数。
于是只能把值,异步传到页面上(如隐藏域的值)。
于是通过获取隐藏域的值,再判断往下执行的逻辑。因此就:必须让ajax函数成功返回后,再继续执行
上一级函数的未完成的部分。
async: false 就是在AJAX未返回时,用来暂停程序往下执行的。
附实例如下:
ajaxCertificateAdd($("#Recipient").val(), "#CertificateInputId", "#CertificateSpanId");
if($("#CertificateInputId").val().length > 0){
alert('检测成功');
}
function ajaxCertificateAdd(Recipient, CertificateInputId, CertificateSpanId) {
$.ajax({
type: "get",
async: false,
dataType: "json",
url: QUERY_TOOLS_TOOLSMANAGEMENT,
data: {
"type": 'checkCertificate',
"recipient": Recipient
},
success: function(response) {
if (response.success) {
//console.log(response.data);
if (response.data.length > 0) {
$(CertificateInputId).val(response.data);
$(CertificateSpanId).html(response.data + " 检验通过");
} else {
$(CertificateInputId).val("");
$(CertificateSpanId).html(" 检验未通过");
}
} else {
alert(response.message);
}
},
error: function() {
alertError();
}
});
}