在后期js中隐藏URL中的参数

当使用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为

  <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中出现如何隐藏它们。

$ .post不应该对你的url做任何事情。 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> 

你应该提供对象$.post
尝试遵循:

 function getFormData(id) { var data = {}; var inputs = $('#'+id).serializeArray(); $.each(inputs, function (i, input) { data[input.name] = input.value; }); return data; }