Задать вопрос

Как вурнуть массив из ajax?

Добрый день! Столкнулся с проблемой, помогите разобраться.
Есть ajax запрос который обращается в php, и тот отдает массив. Ajax его получет успешно. В console.log(JSON.stringify(res)); выглядет вот так.
{"id":"1",
"quest":"Мое слово всегда совпадает с делом.",
"resoult_quest":null,
"skip":null},
{"id":"2",
"quest":"Если я хочу что-нибудь сделать, но окружающие считают, что этого делать не стоит, то я готов отказаться от своих намерений.",
"resoult_quest":null,
"skip":null},

Далее мой js файл уже должен работать с этим массивом. Но вот вернуть его для того чтобы с ним работать я не могу, потому что Ajax - возвращает целую кучу объектов, а мне нужен только мой массив

Вот мой код,
array = $.ajax({ // получаем массив вопросов
            type: "POST",
            url: '/site/questions',
            cache: false,
            dataType: 'json',
            global: false,
            async:false,
            success: function (res) {
                return res;
            }});
console.log(array );

Я получаю вот что:
5d42dd5eb90e7805766042.png

Как мне получить массив в таком виде?
{"id":"1",
"quest":"Мое слово всегда совпадает с делом.",
"resoult_quest":null,
"skip":null},
{"id":"2",
"quest":"Если я хочу что-нибудь сделать, но окружающие считают, что этого делать не стоит, то я готов отказаться от своих намерений.",
"resoult_quest":null,
"skip":null},
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
grey_18_08
@grey_18_08 Автор вопроса
В общем кажется у меня получилось. Вот как нужно было сделать! Всем спасибо!
var arr = [];


    $.ajax({ // получаем массив вопросов
        type: "POST",
        url: '/site/questions',
        cache: false,
        dataType: 'json',
        global: false,
        async:false,
        success: function (res) {
            console.log(JSON.stringify(res));
            getArray(res);
        }});

    function getArray(res) {
        // console.log(JSON.stringify(res));
        arr = JSON.stringify(res);
    }

    console.log(arr);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@DanKud
Потому что это работает не так, как вы подумали. Вы присваиваете своей переменной ссылку на сам AJAX-объект, а не результат выполнения AJAX-запроса. С данными полученными в AJAX-запросе вам нужно работать именно в коллбэк-функции. То есть вот так:
success: function (res) {
    /* здесь весь остальной код для работы с данными полученными в запросе */
}});

Или прописать отдельную функцию и передавать ее имя:
function customFunc(res) {
    /* здесь весь остальной код для работы с данными полученными в запросе */
}

$.ajax({ // получаем массив вопросов
    .....
    success: customFunc
});

А присвоить эти данные переменной можно только через промис. Например так:
(async () => {
    let array = await new Promise(resolve => {
        $.ajax({ // получаем массив вопросов
            type: "POST",
            url: '/site/questions',
            cache: false,
            dataType: 'json',
            global: false,
            success: function (res) {
                return resolve(res);
            }
        });
    });
    console.log(array); /* вот сейчас в переменной будет то, что вам нужно */
})();
Ответ написан
Используйте fetch
https://developer.mozilla.org/en-US/docs/Web/API/F...
function postData(url = '', data = {}) {
  // Значения по умолчанию обозначены знаком *
    return fetch(url, {
        method: 'POST', // *GET, POST, PUT, DELETE, etc.
        mode: 'cors', // no-cors, cors, *same-origin
        cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
        credentials: 'same-origin', // include, *same-origin, omit
        headers: {
            'Content-Type': 'application/json',
            // 'Content-Type': 'application/x-www-form-urlencoded',
        },
        redirect: 'follow', // manual, *follow, error
        referrer: 'no-referrer', // no-referrer, *client
        body: JSON.stringify(data), // тип данных в body должен соответвовать значению заголовка "Content-Type"
    })
    .then(response => response.json()); // парсит JSON ответ в Javascript объект
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы