2017-11-13 9 views
0

フォームの送信イベントに関する情報を送信するために私のコードにAjax呼び出しを実装しましたが、挿入クエリが機能するかどうかを特定のEJSページにrenderredirectにする必要があります。AJAX POST後にEJSページをレンダリングする

それはAjax呼び出しなしで動作するために使用さが、私は、クエリが動作する送信ボタンをクリックしたときに、今、しかしページはここ

がコードでリダイレクトされません。

クライアント

$(function() { 
    $('#addForm').on('submit', function(e) { 
     e.preventDefault(); 
     var titolo = $(this).find("#title").val(); 
     var time = $(this).find("#time").val(); 
     var tags = []; 
     var tagsCont = $(this).find(".chip"); 
     var tmpTag; 
     for(var i = 0; i < tagsCont.length; i++){ 
      tmpTag = $(tagsCont[i]).html().split('<')[0]; 
      tags.push(tmpTag); 
     } 
     var data = {titolo: titolo,time: time, tags: tags}; 
     var dataSend = $.ajax({ 
      type: "POST", 
      url: "/add", 
      data: JSON.stringify(data), 
      cache: false, 
      contentType: "application/json" 
     }); 
     dataSend.done(function(data){ 
      if(!data.status) 
       console.log("Error on data send"); 
      return; 
     }); 
     dataSend.fail(function (jqXHR, textStatus) { 
      console.log("Error on data send " + textStatus); 
      return; 
     }); 

    }); 
}); 

サーバー

var addPost = function(req, res, next) { 
    if(!req.isAuthenticated()){ 
     return res.redirect('/login'); 
    } 
    else { 
     var user = req.user; 
     if(user === undefined) 
      return res.redirect('login'); 
     else{ 
      user = user.toJSON(); 
      var timerPromise = null; 
      timerPromise = new Timer().fetch(); 
      console.log(req.body); 
      return timerPromise.then(function(model){ 
       var creation = new Date(); 
       var timerVal = req.body.time; 
       var ended = false; 
       var owner = user.id_user; 
       var title = req.body.titolo; 
       if(title.length <= 0) 
        return res.render('add.ejs', { 
         title: "Timing Time - Add Timer", 
         user: user, 
         errorMessagge: "Va dichiarato un titolo" 
        }); 
       var new_timer = new Timer({ 
        titolo: title, 
        time: timerVal, 
        created: creation, 
        ended: ended, 
        id_owner: owner 
       }); 
       new_timer.save(null, {method: "insert"}).then(function(model) { 
        if(!model) 
         return res.render('add.ejs', { 
          title: "Timing Time - ERROR", 
          user: user, 
          errorMessagge: "Problemi di inserimento del timer" 
         }); 
        return res.redirect('/'); 
       }); 

      }); 
     } 
    } 
} 

答えて

1

応答がajax経由で受信されている場合、どのURLをバックエンドにリダイレクトしても、フロントエンドには影響しません。クライアント側でリダイレクトを行う必要があります。

dataSend.done(function(data){ 
     if(!data.status) 
      console.log("Error on data send"); 
     else 
      location.href = '/'; 
     return; 
    }); 
関連する問題