Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express res.render在重定向后不工作_Javascript_Node.js_Ajax_Express - Fatal编程技术网

Javascript Express res.render在重定向后不工作

Javascript Express res.render在重定向后不工作,javascript,node.js,ajax,express,Javascript,Node.js,Ajax,Express,我正在使用ajax向我的服务器发出PUT http请求。我在/contact/:id'中处理请求,然后重定向到'/contacts' 但是,重定向后,视图联系人/索引不会呈现,但我只需转到浏览器并访问http://localhost:3000/contacts,它工作得非常好。当我在/contacts路由中执行console.log(params)时,它们与我预期的一样正确 提前谢谢 app.js: var path = require('path'); var express = requir

我正在使用ajax向我的服务器发出PUT http请求。我在
/contact/:id'
中处理请求,然后重定向到
'/contacts'

但是,重定向后,视图
联系人/索引
不会呈现,但我只需转到浏览器并访问
http://localhost:3000/contacts
,它工作得非常好。当我在
/contacts
路由中执行
console.log(params)
时,它们与我预期的一样正确

提前谢谢

app.js:

var path = require('path');
var express = require('express');
var load = require('consign');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var session = require('express-session');

var app = express();

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

app.use(cookieParser());
app.use(session({secret: 'ntalk',
     resave: false,
     saveUninitialized: true}));


app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
     extended: true
}));

app.use('/public', express.static('public'));


app.listen(3000, function(){
     console.log("Running");
});

// Routes

app.post('/enter', function(req,res){
     var name = req.body.user.name;
     var email = req.body.user.email;

     if(name && email){
          var user = req.body.user;
          usuario['contacts'] = [];
          req.session.user = user;
          res.redirect('/contacts');
     }
     else{
          res.redirect('/');
     }
});

app.get('/contacts', function(req,res){
     var user = req.session.user;
     var contacts = user.contacts;
     var params = {
          user: user,
          contacts: contacts
     };
     console.log(params);
     res.render('contacts/index', params);
});

app.put('/contact/:id', function(req,res){
     var user = req.session.user;
     var contacts = req.body.contact;
     var id = req.params.id;
     user.contacts[id] = contact;
     res.redirect(303, '/contacts');
});
阿贾克斯:


您是否意识到ajax调用的重定向不会导致浏览器执行任何操作?这只是对ajax调用的303响应。如果需要,可以由ajax代码来处理重定向响应


如果您想更改浏览器页面,那么从
PUT
获取响应的代码可以从ajax响应中获取重定向的URL,并设置
窗口。位置
以使浏览器页面实际更改。

尝试前端重定向:

$.ajax({
    type: 'PUT',
    url: '/contact/' + $("input:first").val(),
    data: data,
    success: function(){
      console.log("Edited");
      location = '/contacts'; //this is the redirect
    }
});

@你明白为什么你的服务器端重定向没有做任何事情吗?我的回答试图向您解释这一点,以便您了解发生了什么,并告诉您如何进行重定向客户端。是的。我得到了它。现在我明白它为什么不起作用了。谢谢你的解释
$.ajax({
    type: 'PUT',
    url: '/contact/' + $("input:first").val(),
    data: data,
    success: function(){
      console.log("Edited");
      location = '/contacts'; //this is the redirect
    }
});