我尝试使用快递重定向到AJAX发布请求成功的不同网页,但我无法弄清楚。
我尝试在服务器端使用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('/');
});
});
});
任何帮助将不胜感激!
答案 0 :(得分:0)
服务器代码需要发送新的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;
})
}
应该这样做。