Рендеринг данных из формы и использование их с API - PullRequest
0 голосов
/ 17 февраля 2019

Я следил за несколькими статьями о том, как брать данные из HTML-формы и использовать их с API, но, несмотря на все эти исследования, я не могу применить их на практике. Это тот пост, который я использую в качестве начальной точки

Сейчас я просто хочу взять данные из формы HTML, использовать их с вызовом API и console.log это приводит (только я знаю, что это работает).

Моя Express настройка и HTML форма оба ниже:

Экспресс

var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var request = require("request");

app.use(bodyParser.urlencoded({extended: true}));
app.set("view engine", "ejs");

app.use(express.static(__dirname + '/public'));

const apiUrl = "https://api.darksky.net/forecast/"; 
const apiKey = "XXX";

app.get("/", function(req, res){
    res.render("index");
});

app.post('/results', function(req, res){
    var lat = req.body.latitude;
    var long = req.body.longitude;
    request(apiUrl + apiKey + "/" + long + "," + lat, function(error, response, body){
        if (!error && response.statusCode == 200) {
            var parsedData = JSON.parse(body);
            console.log(parsedData.currently.summary + " " + parsedData.currently.temperature);
        }
    });
});

app.listen(3000, function(){
    console.log("Server has started");
})

HTML

<form action = "/results" method ="POST">
    <ul>
        <li>
            <label for = "latitude">Latitude</label>
            <input type="text" name="latitude" placeholder="e.g. 19.4326">
        </li>
        <li>
            <label for = "longitude">Longitude</label>
            <input type="text" name="longitude" placeholder="e.g. 99.1332">
        </li>
    </ul>
    <button type="submit">Get the weather</button>
</form>

Чтобы убедиться, что API работает, я использовал приведенный ниже код, и он возвращает clear 68.16:

var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var request = require("request");

app.use(bodyParser.urlencoded({extended: true}));
app.set("view engine", "ejs");

app.use(express.static(__dirname + '/public'));

const apiUrl = "https://api.darksky.net/forecast/"; 
const apiKey = "XXX";
var lat = 23;
var long = 23;

app.get("/", function(req, res){
    res.render("index");
});

request(apiUrl + apiKey + "/" + long + "," + lat, function(error, response, body){
    if (!error && response.statusCode == 200) {
        var parsedData = JSON.parse(body);
        console.log(parsedData.currently.summary + " " + parsedData.currently.temperature);
    }
});

app.listen(3000, function(){
    console.log("Server has started");
})

1 Ответ

0 голосов
/ 17 февраля 2019

Может быть ошибка с вашим запросом к серверу API.Добавьте блок else к request, чтобы увидеть, что сервер вернул.

request(apiUrl + apiKey + "/" + long + "," + lat, function(error, response, body){
if (!error && response.statusCode == 200) {
    var parsedData = JSON.parse(body);
    console.log(parsedData.currently.summary + " " + parsedData.currently.temperature);
}
else{
  console.log(response.body)
}

Также рекомендуется завершить цикл, например, с помощью res.send

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...