2015-12-01 38 views
0

如果用戶點擊一個按鈕,然後一個XHR請求時去POST:如何路由到通過XHR請求本身調用的發佈請求中的頁面?

 var xhr = new XMLHttpRequest(); // new HttpRequest instance 
     xhr.open("POST", "/registration"); 
     xhr.addEventListener("load", e => { 
      console.log(xhr.responseText) 
     }); 

     xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 
     xhr.send(JSON.stringify(this.state)); 

這裏是POST請求。

router.post('/registration', function *(req, res, next) { 
console.info("trying to get the user"); 
//console.log(this.request.body); 

let {name, password} = this.request.body 

let taken = yield utils.nameTaken(name) 

if(taken){ 
    //redirect to reg page 
    console.log("taken!"); 
    //this.response.redirect("/registration"); 
    //res.redirect('/'); 
    console.log(req); 

} 
else{ 
    userSchema.createUser(name, password, function(err, user){ 
    //console.log(err, user); 
    }); 
    //this.response.redirect("/success"); 
    //redirect to success page 
} 

}) 

我試圖做拍攝時爲真,則該客戶端會重定向到路徑「/」,當拍攝是假的,那麼客戶端被重定向到「/成功」。我在做這些重定向時遇到了麻煩,任何幫助將不勝感激。謝謝。

回答

0

你不能做到這一點以這種方式,至少不是如果我正確理解你。目前發生的事情是,瀏覽器接收到響應(/ success或/)作爲其XMLHTTP請求的答案。然而,重定向已經發生在這一點上。 xhr.request.body將包含GET /成功和GET /返回。

你可能想要做的僅僅是返回一個狀態代碼(我相信好的REST練習對於失敗是403,對於成功是200),並對客戶端做出反應。