使用jquery post方法将表单发送到节点js服务器时,方法参数出现在URL中。
我写了app.js代码如下
var express = require('express'),
app = express(),
server = require('http').createServer(app),
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.post('/Send', function(req, res){
var userName = req.body.Name;
var city = req.body.Cname;
var pass = req.body.pass;
});
index.html as
<form id="registration" >
<input type="text" name="user_name" />
<input type="password" name="pass" />
<input type="submit" id="button" value="Login" />
</form>
<script>
$('#button').click(function(){
$.post( "/Send", $( "#registration" ).serialize());
});
</script>
参数出现在URL中如何隐藏它们。
答案 0 :(得分:2)
$。发布不应对您的网址执行任何操作。 DEMO
确保您正在阻止默认表单行为以及您已准备好DOM
<form id="registration" >
<input type="text" name="user_name" />
<input type="password" name="pass" />
<input type="submit" id="button" value="Login" />
</form>
<script>
$(document).ready(function(){
$('#button').click(function(e){
e.preventDefault();
// why capitalize "/Send"? also change route on back-end
$.post( "/send", $( "#registration" ).serialize(), function(data) {
// success
});
});
});
</script>
答案 1 :(得分:0)
您应该向$.post
提供对象
尝试遵循:
function getFormData(id) {
var data = {};
var inputs = $('#'+id).serializeArray();
$.each(inputs, function (i, input) {
data[input.name] = input.value;
});
return data;
}