2016-07-10 7 views
1

서버 측에서 ajax (사용자 이름 전송)를 사용하여 양식 데이터를 보내려고하고 서버 측에서 SQL 쿼리를 수행하고 결과를 내 템플리트 (EJS)에 전달하려고합니다. 내 서버 측에서 Express js - ajax 호출에서 응답을 얻는 방법?

(ajaxTest.js)

router.post('/', function(req, res){ 
console.log(req.body); 
var query = connection.query("select * from account where username='" + req.body.username+ "'",function (err,result) { 
    console.log(query.sql); 
    if (err) { 
     console.error(err); 
     return; 
    } 
    console.error(result); 

    res.send("Result "+JSON.stringify(result)); 
}); 

}); 내 템플릿에서

(ajaxTest.ejs)

$(document).ready(function () { 
$("#submit").on("submit",function (e) { 
    e.preventDefault(); 
    data = {}; 
    data.username = 'user101'; 
    $.ajax({ 
     type: 'POST', 
     data: JSON.stringify(data), 
     contentType: 'application/json', 
     url: 'http://localhost:3000/ajaxtest', 
     success: function(data) { 
      console.log('success'); 
      console.log(JSON.stringify(data)); 
     } 
    }); 
}) 

});

위의 코드에서 결과는 내 콘솔에 성공적으로 기록되지만 '성공'및 데이터는 반환되지 않습니다. 결과가 템플릿 (ajaxTest.ejs)으로 다시 전송되지 않는 이유가 있습니까?

상황에 대한 의견을 보내 주시면 대단히 감사하겠습니다.

+0

왜'res.json (JSON.stringify (결과를))'사용하지? – Aer0

+0

@ Aer0 나는 res.json도 시험해 보았지만 작동하지 않습니다. 이것이 성공 데이터를 되 찾는 올바른 방법입니까? –

답변

1
res.send("Result "+JSON.stringify(result)); 

res.send("Result "+JSON.stringify(result)); 

에서 리턴 라인을 변경하시기 바랍니다 것은 유효한 JSON을 전송하지.

중 하나를 사용 :

res.send(JSON.stringify(result)); 

또는

res.json(result); 
+1

예 그게 전부입니다! 그것은 지금 감사합니다. :) –

1

JSON 구문에 'Result'가 붙어 있기 때문에 구문이 손상되기 때문입니다.

res.send("Result "+JSON.stringify(result)); 

대신 간단한

res.send(JSON.stringify(result)); 
+0

예 그게 전부입니다! 그것은 지금 많이 감사합니다 :) –

0

프런트 엔드는 JSON 데이터를 예상 할. 백엔드도 해당 데이터를 반환해야합니다. 당신의 Node.js를에

res.status(201).json(result); // return status 201, and json data (do not stringify) 
관련 문제