我试图在 AJAX post 请求成功时重定向到另一个网页,但我无法弄清楚。
我尝试在服务器端使用 res.redirect()
,并在客户端使用 window.location=url
和 location.href=url
和 location.replace(url)
,但这些都不适合我。
这是我的 jQuery ajax 请求:
function addContact(){
var contactName = $('#name').val();
var email = $('#email').val();
var newContact = {name: contactName, email: email};
$.post('/contacts/add', newContact)
.success(function(data){
location.href = data.redirect;
})
}
这是我的服务器代码:
router.post('/add', function(req, res, next){
fs.readFile('./contacts.json', function(err, data){
if (err) return res.status(400).send(err);
var contactArr = JSON.parse(data);
var newContact = req.body;
contactArr.push(newContact);
fs.writeFile('./contacts.json', JSON.stringify(contactArr), function(err){
if (err) return res.status(400).send(err);
res.redirect('/');
});
});
});
如有任何帮助,我们将不胜感激!
最佳答案
服务器代码需要发送新的 URL,而不是重定向,然后客户端代码使用该 URL 进行重定向。所以:
服务器代码:
router.post('/add', function(req, res, next){
fs.readFile('./contacts.json', function(err, data){
if (err) return res.status(400).send(err);
var contactArr = JSON.parse(data);
var newContact = req.body;
contactArr.push(newContact);
fs.writeFile('./contacts.json', JSON.stringify(contactArr), function(err){
if (err) return res.status(400).send(err);
res.json({"redirect":"http:www.google.com"});//replace this with your redirect url
});
});
});
和客户端代码:
function addContact(){
var contactName = $('#name').val();
var email = $('#email').val();
var newContact = {name: contactName, email: email};
$.post('/contacts/add', newContact)
.success(function(data){
window.location.href = data.redirect;
})
}
应该这样做。
关于AjAX post 请求重定向页面时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007064/