У меня проблема с разрывами строк в текстовом поле.
Я получаю текст с помощью функции .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.