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

  • Автор темы boleg1
  • 46
  • Обновлено
  • 15, May 2024
  • #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

Код (разметка): Спасибо,

boleg1


Рег
30 Mar, 2013

Тем
2

Постов
7

Баллов
27
  • 21, May 2024
  • #2
Все это является прекрасным примером того, почему 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.

Черт, это было бы меньше, если бы кто-то использовал умственную карликовость с функцией стрелки.
 

юлия4


Рег
26 Feb, 2011

Тем
1

Постов
5

Баллов
15
  • 01, Jun 2024
  • #3
Спасибо @deathshadow, Мне нравятся обе сокращенные версии. Однако первый выдал ошибку.

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

affiliate.lamoda


Рег
30 Mar, 2012

Тем
1

Постов
5

Баллов
15
  • 09, Jun 2024
  • #4
Хорошо, я понял это. На помощь приходит нечто, называемое обратным вызовом:
 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... );

});
Код (разметка):
 

itcommander


Рег
19 Mar, 2012

Тем
0

Постов
2

Баллов
2
  • 13, Jun 2024
  • #5
Я думаю, это потому, что строки 14 и 15 находятся за пределами блока ajax. Что произойдет, если вы поместите их в метод извлечения данных()?
 function retrieveData(x,y) {

var data = { a: x, b: y };

console.log(data);

return data;
}
Код (разметка):
 

satyr1


Рег
21 Dec, 2014

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно