JQuery .val () не возвращает прерывания строки в текстовом поле

У меня проблема с разрывами строк в текстовом поле.

Я получаю текст с помощью функции .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. Символы Newlines не отображаются в браузере, поэтому вам нужно заменить их на break.http: //us.php.net/nl

Разве это не известная проблема? http://api.jquery.com/val/

Обходной путь использует valHooks, как описано в разделе Note.