如何从服务器(Node JS和Express)接收和使用客户端的JSON对象?

我正在尝试做一些看起来很简单的事情,但是我很难解决这个问题。 用户可以使用POST方法使用HTML表单提交一些文本。 然后发送给一个API进行处理,并返回一个JSON对象。 然后我只是想要app.js文件发送这个JSON对象,所以我可以使用JQuery来玩它。 这是我的app.js.post方法

 app.post('/', function(req, res){ console.log("starting app.post"); // See User Modeling API docs. Path to profile analysis is /api/v2/profile // remove the last / from service_url if exist var parts = url.parse(service_url.replace(/\/$/,'')); var profile_options = { host: parts.hostname, port: parts.port, path: parts.pathname + "/api/v2/profile", method: 'POST', headers: { 'Content-Type' :'application/json', 'Authorization' : auth } }; // create a profile request with the text and the https options and call it create_profile_request(profile_options,req.body.content)(function(error,profile_string) { if (error) {res.render('home.html',{'error': error.message}); console.log("errormessage: "+error.message); } else { // parse the profile and format it var profile_json = JSON.parse(profile_string); var flat_traits = flatten.flat(profile_json.tree); // Extend the profile options and change the request path to get the visualization var fileName="file 1"; //this will eventually be imported automatically //console.log(flat_traits); var scoreObject={"title":fileName, "percentage":functions.matchPercentage(flat_traits)} res.send(scoreObject); //this is what I assume should send this back client-side }); } }); }); // creates a request function using the https options and the text in content // the function that return receives a callback var create_profile_request = function(options,content) { return function (/*function*/ callback) { // create the post data to send to the User Modeling service var post_data = { 'contentItems' : [{ 'userid' : 'dummy', 'id' : 'dummyUuid', 'sourceid' : 'freetext', 'contenttype' : 'text/plain', 'language' : 'en', 'content': content }] }; // Create a request to POST to the User Modeling service var profile_req = https.request(options, function(result) { result.setEncoding('utf-8'); var response_string = ''; result.on('data', function(chunk) { response_string += chunk; }); result.on('end', function() { if (result.statusCode != 200) { var error = JSON.parse(response_string); console.log("status: "+result.statusCode); callback({'message': error.user_message}, null); console.log(error.user_message); } else callback(null,response_string); }); }); profile_req.on('error', function(e) { callback(e,null); }); profile_req.write(JSON.stringify(post_data)); profile_req.end(); } }; 

所以我认为res.send是将数据传递给客户端的东西,但是如何在客户端接收数据呢? 这是我在JScript上的尝试:

 $.getJSON('/').done(function(data){ $('#resultsList').append('<li data-icon="arrow-r" data-iconpos="right" id="'+ data.title+'"> <a href="#breakdownDialog"> <div id="cvResults"><h3>'+ data.title+'</h3> <span>'+data.percentage+ '%</span></div></a><div id="output"></div></li>'); console.log(data.title+data.percentage); } }); 

我想从JSON对象中获取一些值,并将它们放在现有HTML页面的列表中。 目前,这只是带我到一个不同的空白页面,说Undefined 。 我应该如何从服务器获取JSON数据?

编辑:这是我提交数据的HTML表单:

 <form method="POST" id="submitForm"> <fieldset> <textarea id="textArea" required="true" rows="5" name="content"></textarea> <button class="btn btn-block" type="submit"> Analyse </button> </fieldset> </form> 

你确定你是用res.send()发送json吗? 尝试设置标题res.set('Content-Type', 'application/json')或使用res.json()而不是res.send()