2016-01-26 4 views
1

Я пытаюсь перенаправить на другую веб-страницу об успешном отправке запроса AJAX с помощью экспресс, но я не могу понять это.AjAX post request проблема перенаправление страницы

Я попытался с помощью 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

ну сервер должен возвращать URL .... – epascarello

ответ

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; 
    }) 
} 

должны это сделать.

Смежные вопросы