Я делаю вызов api и получаю данные, однако у меня возникают проблемы с отправкой данных обратно в файл js. Я попытался использовать res.send, но я получаю сообщение об ошибке. Я не могу понять, как отправить информацию обратно в файл javascript. (Я взял ключ из ссылки на запрос. Однако из соображений безопасности я возвращаю данные из вызова api). Единственная проблема, с которой я столкнулся, - это вернуть данные во внешний файл javascript.res.send не является функцией
Это файл Javascript, который посылает первоначальный запрос:
/ ********** options button function makes api call to get selected cities forecast *****************
function getCityForecast(e){
var id = document.getElementById('cities');
var getValue = id.options[id.selectedIndex].value;
var suffix = getValue + ".json";
var newObj = JSON.stringify({link : suffix});
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:3000/", true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.send(newObj);
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
console.log(xhr.response);
console.log('recieved');
} else {
console.log('error');
}
}
}
Мой файл server.js выглядит следующим образом:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var http = require('http');
var path = require('path');
var request = require('request');
// ****************** Middle Ware *******************
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(express.static(__dirname + '/public'));
var retrievedString;
// **************** Post Request *******************
app.post('/', function(req, res){
var link = "http://api.wunderground.com/api/key/forecast";
retrievedString = link.concat(req.body.link);
request = http.get(retrievedString , function(res){
var body = '';
res.on('data', function(data){
body += data;
});
res.on('end', function(){
var parsed = JSON.parse(body);
console.log(parsed.forecast.txt_forecast);
res.send(parsed.forecast.txt_forecast);
});
})
.on('error', function(e) {
console.log("Got error: " + e.message);
});
});
app.listen(3000, function() { console.log('listening')});
Спасибо @SylonZero Да, это была проблема. Я изменил его на: request = http.get (retrievedString, function (response) {и все соответствующие переменные, и он сработал. –