лучший метод, чем использование async: false - PullRequest
0 голосов
/ 20 августа 2011

Следующий код работает без каких-либо проблем, однако я хотел бы знать, есть ли лучший способ сделать то же самое без использования 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>');
                                }
                            }
                    }); 
                }  
            }); 
        }
    } 
});  

});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...