Как получить данные из этого вызова ajax

boleg1

Пользователь
Регистрация
30.03.13
Сообщения
7
Реакции
0
Баллы
1
Привет, ребята,
Я получил данные с сервера с помощью метода ajax, но не знаю, как извлечь эти данные из текста ответа, чтобы использовать их где-то еще.
Любые предложения о том, как это сделать, будут очень признательны.
Код:
fetch("/path_to_file/data.json").then(response => { return response.text();
}).then(data => { if(data) { var foo = JSON.parse(data); console.log(data); // {"key1":"value1","key2":"value2"} retrieveData(foo.key1,foo.key2); }
});
function retrieveData(x,y) { var data = { a: x, b: y }; return data;
}
var ax = retrieveData.a;
console.log(ax); // => not working
Код (разметка): Спасибо,
Как получить данные из этого вызова ajax
 

юлия4

Пользователь
Регистрация
26.02.11
Сообщения
9
Реакции
0
Баллы
1
Все это является прекрасным примером того, почему fetch не является улучшением по сравнению с XMLHttpRequest. Особенно, когда в нем нет жонглирования/настройки типа mime, нет обработки кода ответа и т. д. и т. п.

Тем более эта сумасшедшая цепочка «то, то потом» обещает и бесполезную функцию стрелок, которая просто усложняет работу и приводит к накладным расходам ни за что.

Хотя даже при использовании fetch/then зачем эта дополнительная процедура?


Код:
fetch('/path_to_file/data.json').then(function(response) {
var string = JSON.parse(response.text);
console.log(string);
});

Код (разметка): Вырезаем весь лишний мусор. Конечно, если у вас есть такая маленькая функция, возникает вопрос, зачем делать ее отдельной функцией вместо того, чтобы просто поместить ее туда, где вы ее вызываете.

function fABC(file, callback) { fetch(file).then(function(response) { callback(JSON.parse(response.text())); }); }
Код (разметка): смех в том, что простое выполнение fetch/then вручную, а не в функции, в конечном итоге имеет тот же размер, что и ваш код var string=, а это означает, что на самом деле нет законного оправдания даже для создания этой функции fABC. Черт, это было бы меньше, если бы кто-то использовал умственную карликовость с функцией стрелки.
 

affiliate.lamoda

Пользователь
Регистрация
30.03.12
Сообщения
5
Реакции
0
Баллы
1
Спасибо @deathshadow,

Мне нравятся обе сокращенные версии.
Однако первый выдал ошибку. Ответ.текст второго сообщения выглядит примерно так:
ƒ text() { [native code] }
Код (разметка): Я думаю, что это функция, поэтому ее невозможно проанализировать, но я собираюсь ее изменить.
Посмотрим, смогу ли я заставить это работать.
 

itcommander

Пользователь
Регистрация
19.03.12
Сообщения
2
Реакции
0
Баллы
1
Хорошо, я понял это. На помощь приходит нечто, называемое обратным вызовом:
Код:
function fABC(file, callback) { fetch(file).then(response => { return response.text(); }).then(data => { if(data) { var foo = JSON.parse(data); callback(foo); } });
}
var string = fABC("/path_to_file/data.json", function(ss){ console.log(ss); // wooohsa, this takes me two days... );
});
Код (разметка):
 

satyr1

Пользователь
Регистрация
21.12.14
Сообщения
2
Реакции
0
Баллы
1
Я думаю, это потому, что строки 14 и 15 находятся за пределами блока ajax.
Что произойдет, если вы поместите их в метод извлечения данных()?
Код:
function retrieveData(x,y) { var data = { a: x, b: y }; console.log(data); return data;
}
Код (разметка):
 
Сверху Снизу