一开始想让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(" <font color=green>检验未通过<font>");
??????????????????? }
??????????????? } else {
??????????????????? alert(response.message);
??????????????? }
??????????? },
??????????? error: function() {
??????????????? alertError();
??????????? }
??????? });
??? }