/ / Unhandled Versprechen Ablehnung Fehler: Kann nicht lesen Eigenschaft 'Json' von undefined - JSON, reactjs, API, reagieren native, map-Funktion

Unhandled Versprechen Ablehnung Fehler: Kann nicht lesen Eigenschaft 'Json' von undefined - JSON, reactjs, api, reagieren native, map-Funktion

answers.map((answer, index) => {
answer_text = answer.answer_text;
id = answer.id;
return fetch(BASE_URL + url, {
method: "PUT",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": "Token token=" + token
},
body: JSON.stringify({
question: {
answers_attributes: {
"0": {
answer_text: answer_text,
id: id
}
}
}
})
});
})

Ich habe Kartenfunktion verwendet, so dass es auf jeder Karte funktioniertsollte zu JSON.stringify gehen und die Werte zuweisen. Aber ich habe Fehler "Unhandled Versprechen Ablehnung TypeError: Kann nicht lesen Eigenschaft" Json "von undefined". Bitte schlagen Sie mir eine Lösung vor.

Danke im Voraus.

Antworten:

3 für die Antwort № 1

Hier erstellst du eine Reihe von Versprechen, wir brauchen mehr Informationen darüber, wie du danach mit diesen Versprechen umgehst, ich nehme an, du versuchst irgendwo, eine Antwort von diesen Versprechen zu bekommen .then(res => res.json()) aber Ihre Serverantwort ist nicht im JSON-Format.

Um die Ablehnung eines Abrufversprechens zu behandeln, müssen Sie Folgendes tun:

fetch(smth)
.catch(error => //handle the error e.g. console.log(error))

Um zu sehen, ob etwas in Ihrer Anfrage json Körper falsch ist, können Sie es serverseitig protokollieren oder es vor dem Senden protokollieren, können Sie auch die Serverantwort protokollieren, versuchen Sie dies zu identifizieren, was falsch ist:

answers.map((answer, index) => {
answer_text = answer.answer_text;
id = answer.id;
const body = JSON.stringify({
question: {
answers_attributes: {
"0": {
answer_text: answer_text,
id: id
} }
}
})
console.log("Json body request :", body);
return fetch(BASE_URL + url, {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": "Token token=" + token
},
body
}).then(res => {
console.log("server response :", res);
return res;
}).catch(err => console.log("Fetch error :", err));
})

Ich empfehle eine App wie Briefträger um die Antworten von Ihrem API-Server zu testen (einfacher und schneller Debug-Anfrage / Antworten von einer API)

Bearbeiten: Ich denke auch, dass Sie eine POST-Anfrage statt PUT machen wollen.