본문 데이터가 작동하지 않는 게시물 가져오기 매개 변수가 비어 있습니다.
가져오기 위해 ajax 호출을 다시 쓰려고 합니다.
에이잭스:
$.post({
context: this,
url: "/api/v1/users",
data: {
user:
{
email: email,
password: password
}
}
}).done((user) => {
}).fail((error) => {
})
가져오기:
fetch('/api/v1/users', {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: {
"user" :
{
"email" : email,
"password" : password
}
}
})
.then(res => {
if (res.status !== 200) { {
console.log("error")
})
} else {
res.json().then(data => {
console.log(data)
})
}
})
서버에서 오류 빈 매개 변수 - 잘못된 요청이 수신되었습니다.
이 방법도 찾았습니다만, 다음의 코드에서 에러가 발생하고 있습니다.예기치 않은 토큰입니다.
var payload = {
"user" :
{
"email" : email,
"password" : password
}
};
var data = new FormData();
data.append( "json", JSON.stringify( payload ) );
fetch('/api/v1/users', {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: data
})
가져오기 위해 ajax 요청을 다시 작성하려면 어떻게 해야 합니까?
github에서 다음 토픽을 팔로우했습니다.https://github.com/matthew-andrews/isomorphic-fetch/issues/34
이 질문에 대한 해결책은 JSON.stringify 함수를 사용하여 Content-Type 헤더를 application/json으로 설정하는 것입니다.내 질문의 두 번째 시도가 왜 안 먹혔는지 잘 모르겠어.
fetch('/api/v1/users', {
method: 'post',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({ "user": {
"email" : email,
"password" : password
}}),
})
MDN 공식 문서:
var myHeaders = new Headers();
myHeaders.append('Content-Type', 'application/json');
fetch('/contact-form', {
method: 'POST',
headers: myHeaders,
mode: 'cors',
cache: 'default',
body: JSON.stringify(fields)
}).then(() => {
dispatch(contactFormSubmitSuccess());
});
TL;DR 미포함mode: 'cors'
JSON 몸이 통하지 않습니다.
나는 이것과 잠시 씨름했다. cors
의 문제였습니다.어떤 도메인에서 다른 도메인으로(즉, 에서) 요구를 실행하고 있다고 가정합니다.localhost:8080
로.localhost:3000
)가 필요합니다.mode: 'cors'
취득 설정 및 수신 도메인(localhost:3000
는, 송신측 도메인으로부터의 요구를 허가할 필요가 있습니다( ).localhost:8080
).
위의 코드 설명은 다음과 같습니다.
로부터의 요구.localhost:8080
로.localhost:3000
fetch('http://localhost:3000/users/sign_in', {
method: 'POST',
mode: 'cors', // this cannot be 'no-cors'
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"user": {
"email": `${this.state.userEmail}`,
"password": `${this.state.userPass}`
}
}),
})
그리고 수신 도메인이localhost:3000
CORS를 허가하다localhost:8080
.
headers: {'Content-Type': 'application/json'}
이미 대답한
송신할 때, 이 방법으로 동작합니다.body
~하듯이json
실패했습니다.
var formData = new FormData();
formData.append('key1', 'value1');
formData.append('key1', 'value2');
fetch('url', {
method: 'post',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data'
},
body: formData
}`)`
편집: 이 경우 서버는 폼 데이터 제출을 통해서만 내용을 식별했습니다.요청 본문을 json으로 읽기 위해 코드가 작성되지 않았습니다.따라서 서버 측 코드에도 문제가 있을 수 있습니다.
Express 서버를 사용하여 요청을 처리하는 경우 다음 행에 추가해야 합니다.
app.use(express.json({limit:'1mb'}))
나한테 효과가 있었던 건
app.use(express.json())
내 메인 서버 파일에 저장해당.
다음을 시도해 보십시오.
fetch('/api/v1/users', {
method: 'post',
body: JSON.stringify({"user":{
"email": email,
"password": password
}}),
});
(body-parser)를 app.js/server.js의 선두에 둡니다.
app.use(bodyParser.json());
언급URL : https://stackoverflow.com/questions/39842013/fetch-post-with-body-data-not-working-params-empty
'programing' 카테고리의 다른 글
jsx 내의 if-else 문: 반응JS (0) | 2023.03.12 |
---|---|
apply_filters(...)는 WordPress에서 실제로 무엇을 합니까? (0) | 2023.03.12 |
로컬 파일에서 React JS로 json 데이터 로드 (0) | 2023.03.12 |
wp_insert_post를 사용하여 게시 ID 삽입 (0) | 2023.03.12 |
React 응용 프로그램에 서비스 있음 (0) | 2023.03.12 |