Код не работает, когда я пытаюсь отредактировать URL API по данным, введенным в форму, и получить данные из API - PullRequest
0 голосов
/ 20 ноября 2018

Привет всем, поскольку я новичок в nodejs и expressjs, я пытаюсь получить данные в соответствии со значением, введенным в форму.А по значению URL будет редактироваться и отправлять запрос и получать данные и показывать их на странице.Я написал код, но он не работает.

Index.ejs

    <form action="/index" method="POST">
        <label for="name">Enter json/xml: </label>
        <input type="text" name="name">
        &nbsp&nbsp&nbsp&nbsp&nbsp<button type="submit">Submit</button>
    </form>

app.js

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

    app.set('view engine', 'ejs');

    var urlencoderparser = bodyParser.urlencoded({ extended : true });

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

    app.post('/', urlencoderparser, function(req, res){
        res.render('form-data', {data : req.body});
        request.post({
        "headers": { "content-type": "application/json" },
        "url": "http://mysafeinfo.com/api/data?list=englishmonarchs&format="+req.body.name,
        }, (error, response, body) => {
            if(error) {
                return console.log(error);
            }
            data = JSON.parse(body);
        });
        console.log(req.body);
    });

Пожалуйста, помогите мне найти решение

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Я думаю, у вас есть проблема с bodyParser.

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

Добавьте их сразу после app.set('view engine', 'ejs');

И ваша функция записи должна быть такой

     app.post('/', function(req, res){
     request('http://mysafeinfo.com/api/data?list=englishmonarchs&format='+req.body.name, function (error, response, body) {
     var data = JSON.parse(body);
     console.log(req.body);
    });
    });

И убедитесь, что в форме в файле индекса у вас должно быть <input type="text" name="name"> Поскольку вы используете как req.body.name

0 голосов
/ 20 ноября 2018
app.use(express.urlencoded({
  extended: true
}));

app.post('/index', function(req, res){
        res.render('form-data', {data : req.body});
        request.post({
        "headers": { "content-type": "application/json" },
        "url": "http://mysafeinfo.com/api/data?list=englishmonarchs&format="+req.body.name,
        }, (error, response, body) => {
            if(error) {
                return console.log(error);
            }
            data = JSON.parse(body);
        });
        console.log(req.body);
    });
...