在post Node js中隐藏URL中的参数

时间:2014-12-11 05:28:59

标签: jquery node.js express body-parser

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

2 个答案:

答案 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;
}