Jquery .val() 不返回文本区域中的换行符

发布于 2024-10-30 02:05:41 字数 664 浏览 1 评论 0原文

我在文本区域中遇到换行问题。

我使用 .val() 函数获取文本:

var messageBody = $('#composeInput').val();

这是我的 ajax 请求

$.ajax({
    url: 'serverScripts/messages/addMessage.php',
    data: 'messageBody='+messageBody+'&invitedJSONText='+invitedJSONText,
    success: function(){
        //Do something
    }
});

和 PHP:

$messageBody = nl2br(mysql_real_escape_string($_GET['messageBody']));

文本:

嗨!

你好吗?

变成:

嗨!你好吗?

如果我将变量 messageBody 插入另一个 div 元素,我看不到任何 \n 这是否正常。我该如何解决这个问题?

I got problem with line breaks in a textarea.

I get the text with .val() function:

var messageBody = $('#composeInput').val();

This is my ajax request

$.ajax({
    url: 'serverScripts/messages/addMessage.php',
    data: 'messageBody='+messageBody+'&invitedJSONText='+invitedJSONText,
    success: function(){
        //Do something
    }
});

And PHP:

$messageBody = nl2br(mysql_real_escape_string($_GET['messageBody']));

The text:

Hi!

How are you?

Becomes:

Hi! How are you?

If I insert the variable messageBody to an another div-element I can't see any \n is this normal. How do I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

莫多说 2024-11-06 02:05:41

data 参数作为字符串传递时,您必须自己对其进行 URL 编码:

'messageBody=' + encodeURIComponent(messageBody) + '&invitedJSONText=' + encodeURIComponent(invitedJSONText)

但是将 data 参数作为对象传递要简单得多; jQuery 自动编码数据:

$.ajax({
    url: 'serverScripts/messages/addMessage.php',
    data: {
        messageBody: messageBody,
        invitedJSONText: invitedJSONText
    },
    success: function (data, textStatus, jqXHR) {
        $("#foo").html(data); // <-- did something
    }
});

PS:您可以设置 CSS white-space 属性到元素上的 pre-line 以将换行符显示为换行符。

When the data parameter is passed as a string, you must URL encode it yourself:

'messageBody=' + encodeURIComponent(messageBody) + '&invitedJSONText=' + encodeURIComponent(invitedJSONText)

But it is far more simpler to pass the data parameter as an object; jQuery encodes the data automatically:

$.ajax({
    url: 'serverScripts/messages/addMessage.php',
    data: {
        messageBody: messageBody,
        invitedJSONText: invitedJSONText
    },
    success: function (data, textStatus, jqXHR) {
        $("#foo").html(data); // <-- did something
    }
});

PS: instead of nl2br you can set CSS white-space property to pre-line on an element to display newline as newline.

意中人 2024-11-06 02:05:41

您可能想看看 PHP 的 nl2br 函数。换行符不会在浏览器中呈现,因此您必须用换行符替换它们。http://us.php.net/nl

You may want to look at PHP's nl2br function. Newlines characters do not render in the browser, so you have to replace them with line breaks.http://us.php.net/nl

今天小雨转甜 2024-11-06 02:05:41

这不是一个已知问题吗?
http://api.jquery.com/val/

解决方法是使用 valHooks,如注释中所述部分。

Is not that a known issue?
http://api.jquery.com/val/

The workaround is using valHooks as explained in the Note section.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文