【发布时间】:2015-04-01 20:36:43
【问题描述】:
我有一个简单的 HTML 表单
index.html
<!DOCTYPE html>
<html>
<head>
<title>My Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
function sendFormData(){
var formData = JSON.stringify($("#myForm").serializeArray());
$.ajax({
type: "POST",
url:"http://localhost:3000/test",
data: formData,
sucess: function(){
alert("something!");
},
error: function(textstatus, errorThrown) {
alert('text status ' + textstatus + ', err ' + errorThrown);
}
});
}
</script>
</head>
<body>
<form id="myForm">
Name: <input type="text" name="name">
Address: <input type="text" name="address">
<input type="submit" value="Submit" onClick="sendFormData()">
</form>
</body>
</html>
我正在使用 Node.js 将数据发送到服务器
server.js
// Dependencies
var express = require('express');
var bodyParser = require('body-parser');
// Express
var app = express();
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
// Get information submitted
app.post('/test', function(req, res) {
console.log("Information received !");
console.log(req.body);
res.send("Ok!");
});
// Start server
app.listen(3000);
console.log("API is running on port 3000");
我有两个问题。
- 我是否正确地将提取的数据从表单发送到服务器?我可以在控制台中看到值,但网页一直在加载。我只是想发送数据、显示和提醒,并在清理表单字段的情况下留在同一页面。
- 我应该在将数据发送到服务器之前还是之后验证表单中的数据(以及如何验证)?例如,确保字段名称中没有插入数字,或者字段名称的长度应少于 30 个字符。
更新:我使用 Ajax 而不是我最初的方法将数据发送到服务器。我能够在控制台中看到使用 ajax 发送的信息,但 ajax 成功处理程序不会触发。我收到此错误XMLHttpRequest cannot load http://localhost:3000/test. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
提前致谢!
【问题讨论】:
标签: javascript node.js