2017-03-07 5 views
0

私のエクスプレスサーバーでは、deliverCard()メソッドはいくつかのキーと値のペアを提供します。私のPOSTリクエストがエクスプレストリガーとなるのはなぜですか

app.get('/', (req, res) => { 
    let card = deck.deliverCard(); 
    console.log('get', card) 
    res.render('layout.ejs', {element:card}); 
}); 

app.post('/', (req, res) => { 
    let card = deck.deliverCard(); 
    console.log('post', card); 
    res.json(card); 
}); 

XMLHttpRequest

function updateCard(value) { 
    let request = new XMLHttpRequest(); 
    let params = JSON.stringify({learned: value}); 

    request.onreadystatechange =() => { 
    if (request.readyState === 4 && request.status === 200) { 
     // Do a thing. 
    } else { 
     console.log('Status ' + request.status + ' text: ' + request.responseText); 
    } 
    } 
    request.open('POST', '/', true); 
    request.setRequestHeader('Content-type', 'application/json'); 
    request.send(params); 
} 

close.addEventListener('click', function() { 
    value = checkbox[0].checked; 
    updateCard(value); 
}); 

私がリクエストから適切なリクエストボディを取り戻すんだけど、何らかの理由で、サーバー側では、getコールバック関数が呼び出されています。

起動と初期ページのロード:ページが応答を受信した後にリロードされるかのようにです

post { name: 'meter', description: 'Defines a horizontal meter.' } 
get { name: 'progress', description: 'Defines a progress bar.' } 

:リクエストに

app listening on port 3000! 
get { name: 'div', 
description: 'Defines a generic block of content, that does not carry any semantic value. Used for layout elements like containers.' } 

+0

あなた使用することを検討すべきであるロガーとしてあなたの要求のための[モーガン](https://github.com/expressjs/morgan)、それをメソッド、ルート、ステータスコード、レスポンスサイズなど、devには本当に便利な情報があります –

答えて

0

私は正しい質問を得たら、私はこの答えを見つけました:How to avoid automatic page reload after XMLHttpRequest call?。上記の私のコードから明らかでないことは、私が提出しているフォームがあるということです。フォーム送信からデフォルトのアクションを防ぐために、私はこれをしなかった:

close.addEventListener('click', function(e) { 
    e.preventDefault(); 
    value = checkbox[0].checked; 
    updateCard(value); 
}); 
関連する問題