2017-03-05 19 views
0

私はNode.jsを使用していて、POSTリクエストをWebサーバーに送信し、結果を待ってから別のページにリダイレクトします。投稿要求が完了した後にユーザーをリダイレクトする方法

私の問題は、投稿要求が完了する前にres.redirect('xxx');が実行されるということです。 function res1.on('end', function() { res.redirect()はできません。

私はどのようにしてリダイレクトを行うのですか?

app.post('/', function(req,res,next){ 

    console.log(req.body.user); 
    console.log(req.body.pw); 
    console.log("-------- POST -------------"); 

    // form data 
    var postData = querystring.stringify({ 
    grant_type: "password", 
    client_id: "xxx", 
    client_secret:"xxx", 
    username:req.body.user, 
    password:req.body.pw 
    }); 

    var options = { 
    host: 'xxx', 
    port: 443, 
    method: 'POST', 
    path: '/oauth_token.do', 
    headers: { 
     'Content-Type': 'application/x-www-form-urlencoded', 
     'Content-Length': postData.length 
    } 
    }; 

    var req = https.request(options, function (res1) { 
    result = ''; 
    res1.on('data', function (chunk) { 
     result += chunk; 
    }); 
    res1.on('end', function() { 
    var obj = JSON.parse(result); 
    console.log(obj.access_token); 
    access_token = obj.access_token; 
    }); 
    res1.on('error', function (err) { 
     console.log("Error 1"); 
    }) 
    }); 

    req.write(postData); 
    req.end(); 

// res.redirect('xxx'); 

}); 

答えて

1
あなたはそれを行うのを知っているように、

あなたのしたいが、コールバックでそれを行う:応答がサーバから返された時はいつでも

res1.on('end', function() { 
    var obj = JSON.parse(result); 
    console.log(obj.access_token); 
    access_token = obj.access_token; 
    // res.redirect('xxx'); 
}); 
res1.on('error', function(err) { 
    console.log("Error 1"); 
}) 
0

は、それはとてもとても、コールバックであなたのリダイレクトロジックを記述コールバック関数に行きますあなたはそれが完了したことを知っている。

res1.on('end', function() { 
    var obj = JSON.parse(result); 
    console.log(obj.access_token); 
    access_token = obj.access_token; 

    //call your redirect function after success response 
    // res.redirect('xxx'); 

}); 
関連する問題