0
var sw, jkey, d00;
$('#start').click(function(){
    jkey = $('#jira-key').val().trim().replace(/,/g, '').toUpperCase();
    if (jkey.length>0){
        $.get('japi.php', { key : jkey }, function(data){
            d00 = data;
            var dt = data[3].split(' ');
            var nm = dt[0].split('-');
            sw = nm[1] + '-' + nm[2];
            $('#swName').html(sw);
        }, "json");
        alert(sw);
    }
    alert(d00);
}

сначала получаю alert(d00) //undefined, потом летит alert(sw) //undefined, потом в #swName пишется корректное значение (например, '12345-123'). Мне нужно в sw записать значение, которое можно использовать в дальнейшем.

  • У вас запрос к japi.php выполняется асинхронно, а alert(d00); выполняется сразу. Значение переменно d00 присваивается только после возврата ответа от japi.php. – Visman Apr 05 '17 at 03:15
  • я так и подумал, тогда как дождаться выполнения запроса? delay? – Mortgoroth Apr 05 '17 at 03:29
  • Если вам нужны данные из запроса для дальнейшего выполнения, то либо делайте синхронный запрос, либо весь следующий код вызывайте на выполнение только после возврата ответа. – Visman Apr 05 '17 at 03:34
  • сделал $.ajax({ async: false, .... }); помогло, спасибо! Как ваш ответ отметить как решение? – Mortgoroth Apr 05 '17 at 03:53
  • в комментариях никак, пусть @Visman ответит в поле ниже, а Вы потом отметитею – Alexey Shatrov Apr 05 '17 at 04:06
  • @Mortgoroth какой смысл делать запрос синхронным если ajax был специально сделан для асинхронщины? Читай лучше ответы в ссылке на дубликат вопроса выше – Алексей Шиманский Apr 05 '17 at 04:06
  • @АлексейШиманский, я в js и jquery далеко не гуру, по ссылке практически ничего не понял (в смысле, как это применить у себя). Решил синхроном, на этом успокоился :) – Mortgoroth Apr 05 '17 at 04:47
  • Попробуй несколько раз перечитать (ну и основы js тоже, конечно же)..... это важно... представь, что при клике у тебя загружается много данных и будет это длиться минуту...... представь, у пользователя всё висит целую минуту и он не может никуда нажать... это кошмар и ужас. – Алексей Шиманский Apr 05 '17 at 04:52
  • В общем посмотри информацию на счет promise (обещания), callback функций и таких методов для ajax как then, when и т.д. – Алексей Шиманский Apr 05 '17 at 04:54
  • насчет основ полностью согласен - разобраться необходимо, но в моем конкретном описанном случае в принципе не может быть большого объема данных, так что оставлю синхрон, сервис срочно в бой отдавать надо :) – Mortgoroth Apr 05 '17 at 05:57

0 Answers0