Ich habe einen Server-Side-Code eingerichtet, um eine Anfrage an eine externe Website zu stellen und ein JSON-Objekt zurückzugeben, das dann an die Clientseite meiner node.js übergeben wird/Express-Anwendung. Ich beabsichtige dann, auf dem Client eine zusätzliche Verarbeitung auf dem JSON durchzuführen.AJAX Request zum Lesen eines JSON-Objekts von node.js/express server
In meiner index.js Datei Ich habe den folgenden Code definiert meiner Sicht und machen einen RESTful Aufruf der externen Website zu machen:
var express = require('express');
var router = express.Router();
var request = require('request');
// Urls for external server REST API function calls
var url = 'https://someserver.com/appserver/portal/api/1.0/results/recent';
/* GET list of recent reports */
router.get('/testapi', function(req, res, next) {
res.render('testapi', { title: 'List Recent Reports' });
});
/* TEST: function to GET report list */
router.get('/recentreports', function(req, res){
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
res.send(body); // Send the response to the client
} else {
console.log(error);
}
})
});
module.exports = router;
In meinem Jade Ansicht habe ich eine Schaltfläche einrichten machen Rufen Sie die Funktion/recentreports auf und stellen Sie eine Anforderung (möglicherweise AJAX-Anforderung?), um das JSON-Objekt vom Server zu empfangen.
Meine Frage ist: Wie lese ich die Antwort vom Server in meine Client-Seite Anwendung, so dass ich den JSON verarbeiten kann?
Meine Jade Ansicht ist wie folgt:
extends layout
head
block content
h1= title
p Welcome to #{title}
script.
// not sure what goes here
$(function()){
$('#getRecentReports').on('', function() {
$.get('recentreports', function(body) {
$('#jsonbody').html(body)
})
})
}
button(
onclick = "getRecentReports()"
)
Edit: aktualisiert .jade Code, nachdem sie mit ihm spielen um ein bisschen mehr
Randbemerkung: auf dem Server, Sie konnten nicht nur verwendet 'Anfrage ({url: url, json: true}) Rohr (. res) '? –
Ich nehme an, könnte so, dann sieht mein serverseitiger Code wie folgt aus: ... router.get ('/ recentreports', Funktion (req, res) { Anfrage ({url: url, json: true}) .pipe (res) }); ... Wenn ich diese Änderung mache, wie wirkt sich das auf meine Methode aus, um die Antwort einzulesen? – Sledge
Es sollte es nicht ändern, deshalb habe ich es als Randnotiz angeboten. Es ist einfach einfacher, das einzugeben, als explizit einen Rückruf bereitzustellen und die Anfrage vollständig zu puffern, wenn Sie die Antwort einfach irgendwo anders weiterleiten. –