当我尝试通过在表单中输入的数据编辑 API URL 并从 API 获取数据时,代码不起作用
Code is not working when i am trying to edit the API URL by data entered in form and fetch data from API
大家好,我是nodejs和expressjs的初学者,我正在尝试根据表单中输入的值获取数据。并根据值 URL 将被编辑并发送请求并获取数据并将其显示到页面。我写了代码,但它不起作用。
Index.ejs
<form action="/index" method="POST">
<label for="name">Enter json/xml: </label>
<input type="text" name="name">
     <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);
});
请帮我找到解决办法
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);
});
我认为你的 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');
之后添加这些
你的 post 函数应该是这样的
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
大家好,我是nodejs和expressjs的初学者,我正在尝试根据表单中输入的值获取数据。并根据值 URL 将被编辑并发送请求并获取数据并将其显示到页面。我写了代码,但它不起作用。
Index.ejs
<form action="/index" method="POST">
<label for="name">Enter json/xml: </label>
<input type="text" name="name">
     <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);
});
请帮我找到解决办法
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);
});
我认为你的 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');
你的 post 函数应该是这样的
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