首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在使用jquery读写表单输入时必须对字符串进行编码?

为什么在使用jquery读写表单输入时必须对字符串进行编码?
EN

Stack Overflow用户
提问于 2016-09-28 09:43:23
回答 6查看 2.5K关注 0票数 16

我使用如下的标准Jquery从文本输入中以编程方式读取数据:

代码语言:javascript
复制
  var listName = $('#list').val();

然后,在像这样提交之前,我会在表单中添加一个隐藏的输入字段:

代码语言:javascript
复制
var myForm = $("#myForm);
myForm.append('<input type="hidden" name="List" value="' + listName + '" />');

在一个示例中,字段中的值为:

代码语言:javascript
复制
Key Date & Times

因此在UI上,它看起来像这样

代码语言:javascript
复制
<input type="hidden" name="MyList" value="Key Date & Times" />

当我使用以下命令提交表单时:

代码语言:javascript
复制
var myForm = $("#myForm);
myForm.submit();

在asp.net-mvc服务器端检查,我只看到:

代码语言:javascript
复制
Key Date 

被送过来了。经过一些研究后,建议编写一些javascript来运行该值:

代码语言:javascript
复制
encodeURIComponent()

在这样做并查看了服务器端之后,我现在看到:

代码语言:javascript
复制
Key%20Date%20%26%20Times

我怎样才能把它转换回

代码语言:javascript
复制
Key Date & Times

在mvc服务器端?或者,如果我在客户端做错了什么,如果你有任何建议,请告诉我。

我的主要问题是,为什么我必须担心在表单中对隐藏输入框的值进行编码。我以为你会处理好这件事的。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-09-28 09:50:20

代码语言:javascript
复制
string decodeString = HttpUtility.UrlDecode(@"Key%20Date%20%26%20Times");

使用HttpUtility类的UrlDecode方法。

票数 11
EN

Stack Overflow用户

发布于 2016-10-07 14:02:30

当你使用GET方法提交表单(在GET方法'&‘中作为变量分隔符),你必须使用POST方法或字符串操作时,就会发生这种情况。

如果您使用的是encodeURIComponent(),则可以在服务器端使用Server.UrlDecode("");将其转换回来

您还可以阅读此内容以获取额外的知识Click here

票数 1
EN

Stack Overflow用户

发布于 2016-10-13 05:45:11

您很可能正在向服务器提交GET请求,因此每个输入表单字段的所有值都将在查询字符串中发送到服务器。

这样,正如Zulqarnain Jalil已经说过的那样,服务器将每个'&‘解释为查询字符串中键/值对的分隔符,因此您会错过"List“隐藏输入表单字段的最后一部分。

因此,在这种情况下,您必须使用"&“字符对所有值进行url编码。

相反,如果您向服务器提交POST请求,则不需要对表单字段值进行任何url编码,因为它们是单独传递给服务器的,即不是在同一个字符串中。

如果你想避免url编码,试着在POST请求中转换你的请求:

代码语言:javascript
复制
var myForm = $("#myForm");
myForm.method = "post";
myForm.submit();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39736736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档