URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7955
[ Назад ]

Исходное сообщение
"JQuery AJAX возврат данных"

Отправлено Сергей , 19-Мрт-15 13:46 
Всем привет!
При загрузке страницы алерт показывает "response=null".
Хотя в консоли браузера по команде localStorage.getItem('resp') показывается ожидаемое содержимое. Также содержимое верно при перезагрузке страницы.

Как можно это пофиксить?
Заранее благодарен!

GetData();
var response = localStorage.getItem('response');
alert('response='+response);

function GetData(){
    $.ajax({
        type: "POST",
        url: "/url/",
        data: {
            uuid: uuid,
            },
        dataType: "text",
        scriptCharset: "utf-8",
        beforeSend: function() {
        },
        error: function() {
            alert('ошибка');
        },
        complete: function(resp) {//по окончанию запроса
            localStorage.setItem('response', resp);
        },
        success: function(){//ошибок не возникло
        }
    });
}


Содержание

Сообщения в этом обсуждении
"JQuery AJAX возврат данных"
Отправлено Филимон Утренний , 20-Мрт-15 11:14 
Запрос асинхронный. GetData завершается раньше, чем запрос к серверу

"JQuery AJAX возврат данных"
Отправлено Сергей , 20-Мрт-15 12:54 
> Запрос асинхронный. GetData завершается раньше, чем запрос к серверу

А как это можно победить?


"JQuery AJAX возврат данных"
Отправлено Филимон Покушал , 20-Мрт-15 14:08 
> А как это можно победить?

Не по феншую: Добавить async:false, в свойства запроса. Но это очень, очень неправильно. Даже броузеры на это уже ругаются. Неправильно - потому, что запрос может залаговать и вместе с ним может залаговать интерфейс


По феншую: вставьте в success колбек свой код, который должен выполняться после получения данных. complete - это когда запрос завершён и не обязательно успешно. success - когда завершён успешно.

Ещё можно про JQuery Deferred. Пригодится.