使用 jQuery 和 JSON 时如何让我的文本区域保留换行符?
我有一个供用户输入评论的文本区域和一个使用 jQuery 的 .post()
和 JSON 提交的按钮:
$('#submit').click(function () {
var comment = {};
comment.Author = $("#author").val();
comment.Email = $("#email").val();
comment.WebSite = $("#url").val();
comment.Body = $("#comment").val(); // textarea
$.post('/ajax/comments', comment, parseComment, 'json');
但是 $("#comment").val()
确实如此似乎没有保留换行符(输入正在丢失换行符)。我该如何让它发挥作用?
I have a textarea for users to input comments and a button to submit using jQuery’s .post()
and JSON:
$('#submit').click(function () {
var comment = {};
comment.Author = $("#author").val();
comment.Email = $("#email").val();
comment.WebSite = $("#url").val();
comment.Body = $("#comment").val(); // textarea
$.post('/ajax/comments', comment, parseComment, 'json');
But $("#comment").val()
does not seem to preserve newlines (the input is losing newlines). How do I get this to work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
文本区域不会在用户输入的换行符中插入
标记,而是仅包含换行符\n
。当您单击带有虚线的按钮时,此代码片段将显示一个警告框。
如果需要在html页面中显示这些,则需要自己将
\n
替换为
。A textarea does not insert
<br>
tags in a users input for line breaks, rather it simply includes the newline character\n
.This snippet will show an alert box when you click the button, which has the broken line.
If you need to display these in the html page, you need to replace the
\n
with<br>
yourself.使用
$('#comment').val().replace( /\n/g, '
。' );
use
$('#comment').val().replace( /\n/g, '<br \\>' );
.您只需要对文本区域的值使用encodeURIComponent并将其发送到服务器..当您打印出来时..如果是PHP,则可以使用nl2br
You just need to use encodeURIComponent on the value of the textarea and send it to the server..when you print it out..you can use nl2br if PHP for instance
我找到的唯一解决方案是在 json 之外单独传递 textarea 数据。在 json 内部,它需要像 \n 一样进行转义,但是当您从数据库重新加载它时,这会丢失新行。
因此,出于 json 的目的,我对其进行转义以避免解析错误。另外,我单独保存这个 textarea 字段,因为它是由另一个(非 json 解析的)变量保存的。
The only solution I've found is to pass textarea data separately outside of json. Inside json it needs to be escaped like \n but this looses the new lines when you reload it from db.
So for json purposes I escape it to avoid the parsing error. Also I save this textarea field separately as it is by another (non json parsed) variable.