【问题标题】:decodeURIComponent in form querystring以查询字符串形式解码URIComponent
【发布时间】:2017-12-15 14:29:50
【问题描述】:

当我提交表单时,它会在浏览器 url 中添加 hidden 输入作为查询字符串。

$('form').on("submit", function(event) {
    event.preventDefault();
    // what i tried
    
    console.log($(this).attr('action'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="GET">
<input type="hidden" name="d" value="2,1">
<input type="submit" value="Submit"/>
</form>

这个例子的结果是:

/box?d=2%2C1

但我不想看到%2C(它是逗号),我知道decodeURIComponent,但我知道如何获取这个表单动作并在上面使用这个组件,我试过这个:

decodeURIComponent($(this).attr('action'));

但它返回未定义。

目标:

  1. 获取表单操作+查询字符串并在其上使用decodeURIComponent删除%2C
  2. 直接用逗号去掉url查询字符串中的%2C

我想要这个结果:

/box?d=2,1

【问题讨论】:

  • 查询字符串中不能有逗号,必须编码发送
  • 但是没有解决办法? @mast3rd3mon
  • 是的,在服务器上解码
  • @NullDev 我的意思是,在发送到浏览器 url 之前得到这个/box?d=2,1,这是一个动作,不是吗?
  • 但其中哪些确实有效?想想可用性,以及为什么它有多漂亮很重要?

标签: javascript jquery decodeuricomponent


【解决方案1】:

您应该只在服务器端解码 URI,或者如果您以某种方式在客户端收到此请求,则永远不要提交。 URI 被编码以实现安全的“传输”(有时必须显式编码)。代码行为符合预期,否则我看不到您的意思。

【讨论】:

  • 是的,在 cmets 中提到了 @mast3rd3mon。但我仍然在想在这种情况下我该怎么做,这种形式都发生在客户端,而不是服务器。我如何在服务器端处理此表单和操作?有什么例子吗?指南等
  • 首先我会结合表单提交使用 POST 方法。其次,你的服务器上有什么?
  • 在服务器上使用php
  • 用这个创建一个文件,是基本行为:
猜你喜欢
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多