0

Доброе время суток!

Почему console.log( 'ans', ans ) показывает ответ, а console.log( 'r', r ) показывает пустую строку? Я же не объявляю переменную, а использую r.

function captureAndUpload() {
    var r = '';
    html2canvas($("#PAINTING-DIAGRAMMA"), {
        background:'#fff',
        onrendered: function(canvas) {
            var imgData = canvas.toDataURL('image/jpeg');
            var url = 'loadImg.php';
            $.ajax({
                type: "POST",
                url: url,
                dataType: 'text',
                async: false,
                cache: false,
                data: {
                    screen : imgData
                },
                success: function(response){
                    response = "" + response
                    var ans = response.substr(12);
                    r = ans;
                    console.log( 'ans', ans )
                },
                error:function(xhr, ajaxOptions, thrownError){
                    console.log( xhr.responseText )
                }
            });
        }
    });
    console.log( 'r', r )
}
VINET
  • 522
  • 3
  • 16
  • потому что есть onrendered: function(canvas), он скорее всего асинхронный – akrasnov87 Oct 20 '16 at 08:46
  • @akrasnov87 конечно асинхронный. Там же $.ajax() – tutankhamun Oct 20 '16 at 08:49
  • tutankhamun я к тому что внутри метода html2canvas есть объект, в котором есть метод onrendered он и является сам по себе асинхронным – akrasnov87 Oct 20 '16 at 08:52
  • @akrasnov87 Скорее всего вы правы, но сути это не меняет: вопрос надо закрывать – tutankhamun Oct 20 '16 at 08:53

0 Answers0