Вариант 1
window.urlSite=$(this).attr('href');
b1 = $.ajax($(this).attr('href'));
b1.done(function (d1) {
analysisSite(d1,mask2,window.urlSite);
});
Вариант 2
b2 = $(this).attr('href');
b1 = $.ajax($(this).attr('href'));
$.when( b1, b2 ).done(function ( d1, d2 ) {
analysisSite(d1,mask2,d2);
});
в первом происходит работа функции analysisSite() штатно. Во втором - алерт говорит, что страница получена. Но дальше с ней почему-то работать код не хочет.
Второй вариант мне нужен, чтобы помимо запрашиваемой страницы передать и ссылку на эту страницу. Первый вариант не передает данную информацию.
Разница в том, что передается в функцию done.
В случае вызова $.when с одним аргументом, параметрами коллбэка done будут результаты обещания переданного в $.when.
Например:
$.when( $.ajax(...) ).done(function ( result, status, xhr) { ... } );
В случае же, если параметров несколько:
$.when( $.ajax(...), var1, var2 )
каждый параметр коллбэка будет соответствовать результату конкретного обещания:
$.when( $.ajax(...), var1, var2 ).done(function(res1, res2, res3){
// res1 - массив из трех элементов `[result, status, xhr]` - результат выполнения `ajax`.
// res2 - результат выполнения var1
// res3 - результат выполнения var2
});
Так как в твое случае, вторым параметром передается строка, то она же и будет результатом.
В итоге, для того, чтобы получить оба результата, нужно сделать так:
$.when( b1, b2 ).done(function ( d1, d2 ) {
var ajaxResult = d1[0];
var stringResult = d2;
analysisSite(ajaxResult, mask2, stringResult);
});
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники