За последние 24 часа нас посетили 9189 программистов и 451 робот. Сейчас ищут 178 программистов ...

Асинхронный запрос ajax

Тема в разделе "JavaScript и AJAX", создана пользователем Khaybulla, 5 дек 2019.

Метки:
  1. Khaybulla

    Khaybulla Активный пользователь

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    Каким способом можно запустить alert после того как функции вернут ответ ?

    Код (Javascript):
    1. function Test1() {
    2.  
    3.     $.ajax({
    4.         url: '../handler/check.php',
    5.         data: 'test',
    6.         type: 'post',
    7.         dataType: 'json',
    8.         success: function(data) {
    9.             error = data; // возвращает true
    10.         }
    11.     });
    12.  
    13. }
    14.  
    15. function Test2() {
    16.  
    17.     $.ajax({
    18.         url: '../handler/check.php',
    19.         data: 'test',
    20.         type: 'post',
    21.         dataType: 'json',
    22.         success: function(data) {
    23.             error = data; // возвращает true
    24.         }
    25.     });
    26.  
    27. }
    28.  
    29. $(document).ready(function() {
    30.     $('#form').submit(function(e) {
    31.         e.preventDefault();
    32.        
    33.         error = false;
    34.  
    35.         Test1();
    36.         Test2();
    37.  
    38.         alert(error); // в данный момент возвращает false а нужно true
    39.  
    40.     });
    41. });
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.621
    Симпатии:
    493
    Адрес:
    Татарстан
    Асинхронно - никак, ибо асинхронность это не синхронное выполнение
    хотите просто alert - суйте его в функции success
    хотите как результат функции - отключайте асинхронность в параметрах
    Код (Text):
    1. async : false,
     
  3. Khaybulla

    Khaybulla Активный пользователь

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    Данный вариант не подходит, неужели способов нет ? а если использовать promise тоже не получится ?
     
  4. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.196
    Симпатии:
    376
    Есть способ, ща пороюсь в загашнике)
    --- Добавлено ---
    Код (Javascript):
    1. $(function(){
    2.     getData ();
    3. });
    4.  
    5. function getData (){
    6.     var array = [];
    7.  
    8. var a = $.getJSON('index', function(data) {
    9.         data = data.toString().split(';');
    10.         array[0] = [{name1: data[1], name2: +data[2]},{name1: data[10], name2: +data[11]}];
    11.     }),
    12.  
    13.     b = $.getJSON('index2', function(data) {
    14.         data = data.toString().split(';');
    15.         array[1] = [{name1: data[1], name2: +data[2]},{name1: data[10], name2: +data[11]}];
    16.  
    17.     });
    18.  
    19. $.when(a, b).then(function() {createData(array);})
    20.  
    21.  
    22. }
    23.  
    24. function createData(data){
    25.      //data массив после получения данных;
    26. };
    Это был мой пример, просто подстрой под себя. Времени нет переделывать
     
    Khaybulla и runcore нравится это.
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.621
    Симпатии:
    493
    Адрес:
    Татарстан
    @Artur_hopf - а в чем его асинхронность?
     
  6. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.196
    Симпатии:
    376
    @ADSoft да ему error надо вывести. Если был в любом из запросов.
    --- Добавлено ---
    Код (Javascript):
    1. $(function(){
    2.     getData ();
    3. });
    4.  
    5. function getData (){
    6.  
    7. var error = false;
    8. var a = $.getJSON('index', function(data) {
    9.         error = data;
    10.     }),
    11.     b = $.getJSON('index2', function(data) {
    12.         error = data;
    13.     });
    14.  
    15. $.when(a, b).then(function() {createData(error);})
    16. }
    17.  
    18. function createData(data){
    19.      alert(data);
    20. };
     
    Khaybulla нравится это.
  7. Sail

    Sail Активный пользователь

    С нами с:
    1 ноя 2016
    Сообщения:
    1.306
    Симпатии:
    292
    Khaybulla нравится это.
  8. Khaybulla

    Khaybulla Активный пользователь

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    Спасибо! работает как и хотел)