Jquery .val () не возвращает разрывы строк в текстовой области - PullRequest
3 голосов
/ 04 апреля 2011

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

Я получаю текст с функцией .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, это нормально. Как мне это исправить?

Ответы [ 3 ]

14 голосов
/ 04 апреля 2011

Когда вы передаете строку в качестве параметра данных, вы должны 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
    }
});
0 голосов
/ 09 апреля 2013

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

В качестве обходного пути используется valHooks, как описано в разделе «Примечание».

0 голосов
/ 04 апреля 2011

Возможно, вы захотите взглянуть на функцию PHP nl2br.Символы новой строки не отображаются в браузере, поэтому их необходимо заменить на разрывы строк. http://us.php.net/nl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...