Jquery .val()没有在textarea中返回换行符

我在textarea中遇到了换行问题。

我用.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这是正常的。 我该如何解决?

传递字符串作为数据参数时,必须对其进行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 } }); 

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

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

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