nodejs express, ajax posting with jquery 및 수신 응답
Jquery ajax 요청에 적절하게 응답하기 위해 급행을 하는 데 약간 어려움을 겪고 있습니다.실제 포스팅은 잘 되고 있지만, 아무리 노력해도 제 앱에서 사용할 수 있는 데이터 응답을 받을 수 없는 것 같습니다.처음에는 계속해서 게시하고 매달리기만 했는데, 1분 후에는 "XML Document loaded"(XML Document loaded)와 같은 경고 메시지로 응답합니다(어디에서 왔는지 전혀 알 수 없습니다). 어쨌든, 이제는 제게 도움이 됩니다.
구문 오류:IncomingMessage에서 예기치 않은 토큰 불법 구문 분석(native)입니다.
나의 express App에는 다음과 같은 것이 있습니다.
app.post('/save', function(req, res) {
console.log(req.body.objectData);
res.contentType('json');
res.send({ some: 'json' });
});
그리고 나의 질문에:
$.ajax({
url: "/save",
type: "POST",
dataType: "json",
data: {objectData: someObject},
contentType: "application/json",
cache: false,
timeout: 5000,
complete: function() {
//called when complete
console.log('process complete');
},
success: function(data) {
console.log(data);
console.log('process sucess');
},
error: function() {
console.log('process error');
},
});
유효한 JSON 응답을 보내는 것이 아니라 단어를 포함하는 문자열을 보내는 것입니다.json
그러므로.JSON.parse()
고객측에서 실패하고 있습니다.시도해 보기:
app.post('/save', function(req, res) {
console.log(req.body.objectData);
res.contentType('json');
res.send({ some: JSON.stringify({response:'json'}) });
});
자바스크립트 객체 표기법은 객체 형식으로 응용 프로그램 간에 데이터를 공유하는 방법입니다.그러나 HTTP 요청을 통해 개체를 먼저 문자열로 변환하여 단일 변수로 전송하지 않으면 개체를 보낼 수 없습니다.그 기능들은JSON.parse()
그리고.JSON.stringify()
이렇게 해주세요.
제가 노드 서버에 $.ajax를 사용하여 포스팅을 하고 있었기 때문에 본스 목사님의 코멘트는 저에게 특히 중요했습니다.내 관련 코드 부분은 결국 다음과 같습니다.
// Incoming parameter "teams" is an array of objects
function saveTeams(teams) {
var xhr;
var data = JSON.stringify({ teams: teams });
xhr = $.ajax({
type: "POST",
url: "http://localhost:8000/saveteam",
contentType: "application/json",
data: data,
headers: {
Authorization: "..."
}
});
return xhr;
}
참고할 내용은형식 헤더는 구문 분석이 작동하는 데 적합합니다.
노드 서버 쪽에서는 다음과 같이 페이로드를 처리할 수 있습니다.
saveTeams: function (req, res, next) {
var teams = req.body.teams;
if (teams.length > 0) {
console.log("Teams to be added:");
for (var i = 0; i < teams.length; i++) {
console.log(teams[i]);
// ...
}
}
// ...
}
급행을 쓰시니까.
res.contentType('json');
다음이 되어야 합니다.
res.type('json');
하지만 타입을 설정하는 것은 자동으로 수행되기 때문에 필요하지 않습니다.
res.type에 대한 express api 문서를 참조하십시오.
또한, 급행의 경우,res.send({blah:"gee"});
내부적으로 JSON.stringify를 사용하여 json 개체를 자동으로 변환합니다.위의 링크를 클릭한 후,res.send
그리고 당신이 그 일을 하는 동안,res.json
JSON을 보낼 때 프로세서 오버헤드가 조금 줄어듭니다.JSON을 전송하면 자동으로 JSON으로 타입이 설정됩니다.
항상 출처를 보는 것이 최선입니다!res.send가 JSON을 감지하면 이.json을 호출하고 res.json이 이를 호출한다는 점에 유의하십시오.보내기(네, 루프처럼 보이지만 모두 해결됨).
언급URL : https://stackoverflow.com/questions/6289276/nodejs-express-ajax-posting-w-jquery-and-receiving-response
'programing' 카테고리의 다른 글
Innodbon MariaDB가 자동으로 쓰기 실패 중입니다. (0) | 2023.09.08 |
---|---|
'div'의 알려진 속성이 아니므로 'aria-value now'에 바인딩할 수 없습니다. (0) | 2023.09.08 |
원격 데이터베이스가 있는 Laravel의 여러 데이터베이스 (0) | 2023.09.08 |
라틴 1 콜렉션 느린 쿼리가 있는 테이블, utf8mb4로 빠름 - 왜? (0) | 2023.09.08 |
Laravel 삭제 쿼리 작성기 (0) | 2023.09.08 |