2017-01-10 2 views
0

res.end('{"success" : "Updated Successfully", "status" : 200}');を使用してAjaxリクエストに成功ステータスを送信しようとしていますが、このエラーが発生します。エラー:送信後にヘッダーを設定できません。基本的には、ユーザーデータがサーバーに保存されているときに、私は手動でそれをしようとする前に、私はapp.postのどこかに成功メッセージが送信されていると思うが、私は、ページを更新するajaxしたい。私は手動でそれを行うことができるように、どのように成功メッセージがajax投稿要求に送信されるのを防ぐことができます。Node.jsがAjax投稿要求に成功ヘッダーを送信するのを防ぐ方法

app.post('/signup', function (req, res) { 
var userDetails = User({ 
    username: req.body.username, 
    email: req.body.email, 
    password: bcrypt.hashSync(req.body.password1, bcrypt.genSaltSync(10)) 
}); 

User.findOne({ 
    $or: [{ 
     'username': req.body.username 
    }, { 
      'email': req.body.email 
     }] 
}, function (err, user) { 
    if (user) { 
     if (allClients.indexOf(req.body.socket)) { 
      if (user.username === req.body.username) { 
       io.to(req.body.socket).emit('userInfo', 'That username is already in use.'); 
      } else { 
      } 
      if (user.email === req.body.email) { 
       io.to(req.body.socket).emit('userInfo', 'That email is already in use.'); 
      } else { 
      } 
     } else { 
      console.log('timeout error 822') 
     } 
    } else { 
     req.login(userDetails, function (err) { 
      if (!err) { 
       userDetails.save(function (err) { 
        if (err) throw err; 
        res.end('{"success" : "Updated Successfully", "status" : 200}'); 
        res.redirect('/'); 
       }); 
      } else { 
       console.log(err) 
      } 
     }) 
    } 
    if (err) { 
     return done(err); 
    } 
}); 
}); 

これは私のAjaxリクエストである

$("#form1").submit(function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      datatype: "json", 
      type: "POST", 
      url: '/signup', 
      data: $(this).serialize(), 
      success: function(result) 
      { 
       console.log(result); 
       if(result.status == 200){ 
        window.location.reload(true); 
       } 
      } 
     }); 
    }); 
+0

Expressを使用していますか?もしres.status(200).send( "Updated successfully"); 'デフォルトではres.send()は200 – sgtdck

答えて

0

私はこの問題は、コードであると思う:

res.end('{"success" : "Updated Successfully", "status" : 200}');     
res.redirect('/'); 

だけ

res.status(200).send({"success" : "Updated Successfully", "status" : 200}) 

res.redirectで上記を交換してくださいユーザーを別のページに連れて行くことです(それはgetルートを呼び出します)。あなたが得ているエラーは、ノードが応答をajaxに送り返すか、リダイレクトするかの間で混乱しているからです。

+0

を返すことに注意してください。 –

関連する問題