programing

nodejs express, ajax posting with jquery 및 수신 응답

muds 2023. 9. 8. 21:47
반응형

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.jsonJSON을 보낼 때 프로세서 오버헤드가 조금 줄어듭니다.JSON을 전송하면 자동으로 JSON으로 타입이 설정됩니다.

항상 출처를 보는 것이 최선입니다!res.send가 JSON을 감지하면 이.json을 호출하고 res.json이 이를 호출한다는 점에 유의하십시오.보내기(네, 루프처럼 보이지만 모두 해결됨).

언급URL : https://stackoverflow.com/questions/6289276/nodejs-express-ajax-posting-w-jquery-and-receiving-response

반응형