Я пытаюсь в console.info указать «имя» объекта. Каждый раз, когда я пытаюсь это сделать, он возвращает «неопределенное». Как я могу это решить?
fetch('http://localhost:9000/quiz/code', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: code
})
}).then(res => res.json())
.then(data => {
data = JSON.stringify(data);
console.info("data: " + data);
console.info("name: " + data.name);
})
Это вывод моего первого console.info:
data: [{"_id":"5cab356c8b35014074855ada","name":"fsgsdfgd","vragen":{"vragen":[{"question":"Hoe wordt een middagdutje zoals dit bijvoorbeeld in Spanje wordt gehouden genoemd?","answer":"Een siësta","category":"Algemeen"},{"question":"Hoe wordt een middagdutje zoals dit bijvoorbeeld in Spanje wordt gehouden genoemd?","answer":"Een siësta","category":"Algemeen"}]}}]
Это вывод моего второго console.info:
name: undefined
Если точно известно, что в массиве всегда будет один элемент, data[0].name
может дать вам то, что вы хотите.
Попробуйте сделать data[0].name
Почему вы сериализуете свой data
?
удалить data = JSON.stringify(data);
он преобразует данные, которые являются массивом, в строку.
Вы используете stringify()
для данных ответа, а затем обрабатываете их как объект. Это не может работать. Просто удалите data = JSON.stringify(data);
, так как у вас уже есть действительный JSON (в виде массива). Вы можете просто перебрать объекты в массиве и получить имя каждого объекта:
fetch('http://localhost:9000/quiz/code', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: code
})
}).then(res => res.json())
.then(data => {
console.info("data: ", data);
data.forEach(function(obj) {
console.info("name: " + obj.name);
});
console.info("name: " + data[0].name);
})
данные: [{" это массив
Вы должны получить доступ к элементу массива, прежде чем получить свойство имя:
Пример доступа по индексу:
console.info("name: " + data[0].name);
удалите строку и используйте data[0].name
data = [{"_id":"5cab356c8b35014074855ada","name":"fsgsdfgd","vragen":{"vragen":[{"question":"Hoe wordt een middagdutje zoals dit bijvoorbeeld in Spanje wordt gehouden genoemd?","answer":"Een siësta","category":"Algemeen"},{"question":"Hoe wordt een middagdutje zoals dit bijvoorbeeld in Spanje wordt gehouden genoemd?","answer":"Een siësta","category":"Algemeen"}]}}]
console.info(data[0].name)
Я удалил JSON.stringify(data) и добавил data[0].name в свой console.info. Это решило проблему. Мой новый код выглядит так:
fetch('http://localhost:9000/quiz/code', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: code
})
}).then(res => res.json())
.then(data => {
data = data;
console.info("name: " + data[0].name);
})
//try like this
success: function (result) {
console.info(result);
show_edit_form();
$('#txt_order_id').val(result[0].rec_id);
$('#txt_first_name').val(result[0].fname);
$('#txt_last_name').val(result[0].lname);
},
data
— этоArray
объектов. Вам нужно выбрать объект в массиве (по индексу), прежде чем пытаться получить доступ к свойствуname
объекта, то естьconsole.info(data[0].name)
. Также удалитеdata = JSON.stringify(data);
. Это просто превращает массив в строку, которая бесполезна для ваших целей.