获取请求后重定向到页面

时间:2018-04-23 19:48:12

标签: javascript jquery html node.js ajax

我正在通过两个元素创建一个网页编辑器:ejs格式的前端和nodejs中的后端。在前端,我有一个带有按钮的文本框,用于从用户那里获取一些输入。当按下按钮时,前端执行对服务器的GET请求(使用服务器节点到外部URL),我的目的是使用从GET请求中检索的数据创建表。实际上,我的代码执行到服务器的GET请求,但我无法将我的ejs页面重定向到新页面(由表格组成) 这是我的代码: index.ejs

<html lang="en">

<%- include header %>
<!-- Main component for a primary marketing message or call to action -->
<div class="jumbotron">
<h1>Welcome</h1>
<p>Hello Dashboard</p>
</div>
</html>

<div class="row">
<form class="col s12" id="plate">
    <div class="row">
        <div class="input-field col s12">
            <label for="plate">Insert plate</label>
            <input type="text" id="myText" >
              <button class="btn waves-effect waves-light" type="submit" onclick="search()">Submit
               <i class="material-icons right">send</i>
              </button>
        </div>
    </div>
</form>
</div>
<script>
function search() {
var x = document.getElementById("myText").value;
var url="http://localhost:1500/block?plate="+x;
$.get(url, function(data, status){
      window.location.replace(url);
});
}
</script>

这是我的服务器(节点):

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var bodyParser=require("body-parser");
var expressapp = express();
var EventEmitter = require("events").EventEmitter;
var body = new EventEmitter()
var rp = require('request-promise');
// all environments
expressapp.set('port', process.env.PORT || 8080);
expressapp.set('views', __dirname + '/views');
expressapp.set('view engine', 'ejs');
expressapp.use(bodyParser.urlencoded({ extended: false }));
expressapp.use(bodyParser.json());
expressapp.use(express.static(path.join(__dirname, 'public')));


expressapp.get ('/', function(req, res, next){
  res.render('index.ejs');
});

expressapp.get('/block', user.block);
//Middleware
expressapp.listen(1500, function () {
console.log('Server listening on port 1500!');
});

这是我的/routes/index.js:

exports.block = function(req, res, next){
const request = require('request');
plate= req.query.plate;
 url="http://150.145.11.134:3000/api/queries/GetSostaByPlate? 
request_platenumber="+plate;
request(url, function (err, response, body) {
if (err || response.statusCode !== 200) {
  return res.sendStatus(500);
}
console.log(JSON.parse(body));
res.render('plate.ejs', { results : JSON.parse(body) });

});
};

我的目标是将页面(在按下按钮之后)重定向到http://localhost:1500/block?plate=<text insert into the form>

之类的网址

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

expressapp.get('/block', function(req, res) {
  res.render('plate.ejs', { results : JSON.parse(body) });
});   

expressapp.get('/', function(req, res) {
  if (user.block) {
     res.redirect('/block');
  } else {
    res.render('index')
  }
});

基本上,您定义了/block应该呈现的方式,然后将目标网页重定向到/block,并且应该正确呈现。