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

问题描述 投票:0回答:3

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

我用 .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 元素,我看不到任何内容 这是正常的吗?我该如何解决这个问题?

php jquery ajax textarea
3个回答
15
投票

当您传递字符串作为数据参数时,您必须像这样对其进行 URL 编码:

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

如果将参数作为对象传递,jQuery 会负责对数据进行编码:

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

PS:代替

nl2br
,您可以在元素上将 CSS
white-space
属性设置为
pre-line
,以将换行符显示为换行符。


0
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.