728x90
반응형
질문 : 가져 오기 : POST JSON 데이터
fetch를 사용하여 JSON 개체를 게시하려고합니다.
내가 이해할 수있는 한, 요청 본문에 문자열 화 된 객체를 첨부해야합니다. 예 :
fetch("/echo/json/", { headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, method: "POST", body: JSON.stringify({a: 1, b: 2}) }) .then(function(res){ console.log(res) }) .catch(function(res){ console.log(res) })
jsfiddle의 JSON 에코를 사용할 때 {a: 1, b: 2}
)를 다시 볼 수있을 것으로 예상되지만 이것은 발생하지 않습니다. 크롬 devtools는 요청의 일부로 JSON을 표시하지도 않습니다. , 이는 전송되지 않음을 의미합니다.
답변
ES2017 async/await
지원 을 사용하여 JSON 페이로드 POST
(async () => { const rawResponse = await fetch('https://httpbin.org/post', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({a: 1, b: 'Textual content'}) }); const content = await rawResponse.json(); console.log(content); })();
ES2017을 사용할 수 없습니까? 약속을 사용하여 @vp_art의 답변보기
그러나 문제는 오랫동안 수정 된 크롬 버그로 인한 문제를 묻는 것입니다.
원래 대답은 다음과 같습니다.
chrome devtools는 요청의 일부로 JSON을 표시하지 않습니다.
이것이 실제 문제 이며 Chrome 46에서 수정 된 chrome devtools 의 버그입니다.
해당 코드는 정상적으로 작동합니다. JSON을 올바르게 게시하고 있지만 볼 수 없습니다.
나는 내가 보낸 물건을 볼 것으로 기대합니다
JSfiddle의 echo에 대한 올바른 형식 이 아니기 때문에 작동하지 않습니다.
올바른 코드 는 다음과 같습니다.
var payload = { a: 1, b: 2 }; var data = new FormData(); data.append( "json", JSON.stringify( payload ) ); fetch("/echo/json/", { method: "POST", body: data }) .then(function(res){ return res.json(); }) .then(function(data){ alert( JSON.stringify( data ) ) })
JSON 페이로드를 수락하는 엔드 포인트의 경우 원래 코드가 정확합니다.
출처 : https://stackoverflow.com/questions/29775797/fetch-post-json-data
728x90
반응형
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
CSS를 사용하여 체크 박스 스타일을 지정하는 방법 (0) | 2021.09.15 |
---|---|
JSON 웹 토큰 무효화 (0) | 2021.09.14 |
ReactJS 컴포넌트에 여러 클래스를 추가하는 방법 (0) | 2021.09.14 |
JavaScript 객체의 클래스를 얻는 방법 (0) | 2021.09.13 |
동일한 요소에서 배경 이미지와 CSS3 그라디언트를 결합하는 방법 (0) | 2021.09.13 |