Следующий код работает без каких-либо проблем, однако я хотел бы знать, есть ли лучший способ сделать то же самое без использования async: false
во втором вызове Ajax.Много прочитав о блокировке браузера во время выполнения запроса, я обеспокоен этим, хотя я не видел этого ни в одном браузере, в котором я его тестировал.
Отредактировано: этот код сначала выполняетajax-вызов MailingList_unsubscribe.asp для получения адреса электронной почты, который затем используется URL-адресом во втором запросе Ajax, который отправляет информацию с адресом электронной почты (строкой запроса) в URL-адресе на страницу /v/get_id.asp.Эта страница запрашивает данные XML из базы данных и в зависимости от ответа выдаст одно из двух возможных сообщений.
jQuery(function(){
jQuery.ajax({
url: '/MailingList_unsubscribe.asp',
type: 'GET',
cache: false,
success: function(data){
if (jQuery(data).find('#content_area').find('input[name="emailaddress"]').length && jQuery(data).find('#content_area').find('input[name="emailaddress"]').val() != '' ){
jQuery.ajax({
url: '/v/get_id.asp?email=' +jQuery(data).find('input[name="emailaddress"]').val(),
type: 'GET',
cache: false,
async: false,
success: function(data){
var xml;
if (typeof data == "string" && jQuery.browser.msie ) {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(data);
} else {
xml = data;
}
jQuery(xml).find('Customers').each(function(){
if (jQuery(this).find('Customer_IsAnonymous').text() == 'N' || jQuery(this).find('Customer_IsAnonymous').length == 0 ){
if(jQuery(this).find('Custom_Field_SubExpiry').text() != ''){
jQuery('#CBA').closest('tr').after('<tr class="colors_backgroundneutral"><td width="242"><span id="subscription">My subscription expires after '+jQuery(this).find('Custom_Field_SubExpiry').text()+'</span></td><td width="235"></td></tr>');
} else{
jQuery('#CBA').closest('tr').after('<tr class="colors_backgroundneutral"><td width="242"><span id="subscription">I do not have a current subscription</span></td><td width="235"></td></tr>');
}
}
});
}
});
}
}
});
});