gpt4 book ai didi

javascript - ENTER 在 POST 上从\n 转换为\r\n

转载 作者:可可西里 更新时间:2023-11-01 16:23:12 26 4
gpt4 key购买 nike

我将这个简单的测试页保存为 page1.html。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript">
function submitForm() {
alert(escape(document.myform.mytextarea.value));
return true;
}
</script>
</head>

<body>
<form name="myform" action="page2.html" method="post" onsubmit="javascript:return submitForm();">
<textarea name="mytextarea">xxxyyy</textarea>

<input type="submit" value="submitForm">
</form>
</body>
</html>

并将此页面保存为page2.html。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<body>
Page2.html
</body>
</html>

我在 Firefox 下打开 page1.html(我认为版本不重要,但它是 18.0。Chrome 或 IE 10.0 也有同样的问题)。在单击 submitForm 按钮之前,我像这样在值“xxx”和“yyy”之间按了一个 ENTER。

HTML Form

当我单击 submitForm 按钮时,警报显示“xxx”和“yyy”之间的一个字符,\n 编码为“%0A”。

Javascript Alert

如果我查看发布内容的 Firebug,我可以看到两个字符“\r\n”编码为“%0D%0A”。

Firebug POST

你能解释一下为什么\n 在 POST 上被转换为\r\n 以及如何防止这种情况发生吗?我尽量减少了我的问题,但这对我来说确实是个问题。

我可以在 MAC OS 上的 Safari 下测试这个,我也在 POST 上得到 %0D%0A。

在 IE 8.0 及之前版本中,Javascript 警告 %0D%0A 并且我在 POST 上得到 %0D%0A,因此 IE 8.0 及之前版本的行为不同。

最佳答案

不同操作系统对换行符的处理方式不同。

\r = CR(回车)//在 Unix 中用作换行符

\n = LF (Line Feed)//在 Mac OS 中用作换行符

\r\n = CR + LF//在Windows中用作换行符

就文本区域中的数据而言。当提交表单时,文本区域的内容是 url 编码的,并且按照 HTML Spec :

Line breaks, as in multi-line text field values, are represented as CR LF pairs, i.e. `%0D%0A'.

我找到了一个相关的 SO Question解决了换行符和跨平台兼容性方面的类似问题。

就您的问题而言,如果您希望统一处理新行,您可以在文本区域的内容中执行一个简单的正则表达式替换来处理差异。

关于javascript - ENTER 在 POST 上从\n 转换为\r\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21402693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com