私は現在、人々がコメントを投稿できる簡単なオンラインフォーラムを構築しようとしています。しかし、私はどのように書くのが正しい方法であるかわかりません。 type = "POST"を選択してフォームを送信した後、Ajaxが自動的に呼び出されますか?Node.jsを使用してNode.jsからJSONデータをHTMLに送信して取得する方法
ルートファイルに正しいプログラムを書いているかどうかわかりません。
ここに私のコードです。ここで
<!DOCTYPE>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
// $(function(){
// $("#target").submit(function(event){
// event.preventDefault();
// $.post("/users", function(data){
// $("#result").html(JSON.stringify(data));
// });
// });
// });
//Not sure which way I should use ↑↓
$.ajax({
type: "GET",
url: 'http://localhost3000/users',
data: data,
dataType: 'json'
})
.done(function(data){
console.log("GET Succeeded");
$('#result').html(JSON.stringify); //What should I put after JSON.stringify?
});
$(function(){
$("#target").submit(function(event){
$.ajax({
type: "POST",
url: 'http://localhost3000/users',
data: data,
dataType: 'json'
})
.done(function(data){
console.log("POST Succeeded");
$('#result').html(JSON.stringify); //What should I put after JSON.stringify?
});
});
});
</script>
</head>
<body>
<div id="result"></div>
<form action="/users" method="post" id="target">
Username:<input type="text" name="username">
<input type="submit" value="Post">
</form>
</body>
</html>
私のルートはここ
var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var Users = require('../models/users');
var userRouter = express.Router();
userRouter.use(bodyParser.json());
userRouter.route('/')
.get('/users', function (req, res, next) {
Users.find({}).then(function(user){
res.json(user)
}).catch(next);
})
.post(function(req, res, next){
// res.send("Confirmed");
Users.create(req.body).then(function(user){
res.send(user);
}).catch(next);
res.json(newUser);
});
module.exports = userRouter;
ファイルである私のapp.jsが
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var url = 'my database';
mongoose.connect(url);
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
console.log("Connected correctly to server");
});
var routes = require('./router/index');
var userRouter = require('./router/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/users', userRouter);
//Error handler for user
app.use(function(err, req, res, next){
res.status(422).send({error: err.message});
});
//catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
if (app.get('env') === 'development'){
app.use(function(err, req, res, next){
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
});
app.use(function(err, req, res, next){
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
ありがとう:)
フォームにフォーカスがあるか、送信ボタンをクリックしたときに、ユーザが 'enter'を押した瞬間に言及していますか? –
投稿したすべてのコメントがすでにコメントフォームの上にあるフォーラムを作成しようとしています。ユーザーが送信ボタンをクリックすると、そのコメントは既に他のユーザーが投稿したすべてのコメントの下にも投稿する必要があります。 – Asu
ああ送信ボタンをクリックしたときに – Asu