【问题标题】:To hide parameters in URL in post Node js在 post Node js 中隐藏 URL 中的参数
【发布时间】:2015-02-09 12:44:00
【问题描述】:

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

【问题讨论】:

  • 你能不能把你的前端代码放到一个jsfiddle或者codepen里
  • @Todd 我现在已经添加了前端代码。
  • 试试serializeArray() 而不是serialize

标签: jquery node.js express body-parser


【解决方案1】:

您应该向$.post提供对象。
尝试跟随:

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

【讨论】:

    【解决方案2】:

    $.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>
    

    【讨论】:

    • @manohar 我的回答解决了这个问题吗?如果是,请标记为选中。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    相关资源
    最近更新 更多