2017-06-28 4 views
0

フォームからデータを取得しようとしていますが、Node.js getメソッドを使用して処理し、ウェブページにレスポンスを配置しています。 1つのことを除いてすべて正常に動作します。ページは最後にリロードされ、受信したデータはそこに長く留まらないようにします。投稿後にページがリロードされています

私は間違っていますか?

script.js:

;!function() { 
    'use strict'; 

    const form = document.forms['user']; 
    form.elements['submit'].addEventListener('click',() => { 
    let xhr = new XMLHttpRequest(); 

    let onload =() => { 
     document.querySelector('#result').innerHTML = xhr.responseText; 
     xhr.removeEventListener('load', onload); 
    }; 

    xhr.addEventListener('load', onload); 

    xhr.open('GET', '/firstName'); 
    xhr.send(form.elements['firstName']); 
    }); 

}(); 

app.js:

var express = require('express'); 
var mysql = require('mysql'); 

var app = express(); 
app.use(express.static('public')); 


var connection = mysql.createConnection({ 
    host: 'localhost', 
    port: '8889', 
    user: 'root', 
    password: 'root', 
    database: 'user' 
}); 

connection.connect(err => { 
    if (err) { 
    console.log(err); 
    } else { 
    console.log('connected'); 
    } 
}); 

app.get('/firstName', (req, res) => { 
    connection.query('SELECT * FROM user', (err, rows, fields) => { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log("SUCCESS"); 
     res.send(rows); 
    } 
    }); 
}); 

app.listen(3000); 
+0

)'かちょうど 'return false; –

答えて

2

提出フォーム上のデフォルトのブラウザの動作。あなたはそれが起こらないようにする必要があります。 @Ondra Koupil

よりよい解決策が提案し

form.elements['submit'].addEventListener('click', (ev) => { 
    ev.preventDefault() 

アップデートはsubmitイベントにバインドすることです。これはまた、フォームを送信するために<button>要素を使用することにより、キーボード(ctrl + enter)を介して開始されたフォームsubmition

form.addEventListener('submit', (ev) => { 
    ev.preventDefault() 
    // ... rest of your code 
+0

本当に助けてくれてありがとう、ありがとう! –

+1

ajax関数をボタンのクリックではなくフォームの "submit"イベントにバインドする方が良いでしょう。そうでない場合は、フォームにテキスト入力がある場合は、入力が集中している間にEnterキーを押すと、フォームが提出されます。 –

+0

@OndraKoupil私の答えを更新しました。 –

-1

を扱うでしょう、ページをリロードすることを余儀なくされます。代わりに<button>

あなたが使用する必要がありますあなたは...ないclick` `ためのフォームの` submit`イベントに耳を傾け、あなたがキャッチしたときにyuoは `event.preventDefaultを(行う必要があり、イベントを提出しなければならない<a href='javascript:;'>

+2

いいえ、絶対に 'href =" javascript: "'を使用しないでください。リンクでない場合は、リンクマークアップを使用しないでください。 – Quentin

関連する問題