Каково значение возврата каретки в контексте javascript-php? - PullRequest
3 голосов
/ 16 ноября 2010

Я ввожу данные в текстовое поле моей формы, которое содержит 2 символа новой строки, но без символа возврата каретки.(Я могу подтвердить с помощью strlen в js или с помощью функции str.charCodeAt ().)

Теперь я отправляю эту форму в скрипт php, который каким-то образом получает возврат каретки вместе с символом новой строки.

Так что, в принципе, \n в js становится \r\n в php.

У меня есть 2 вопроса:

  1. Кто-нибудь знает, почему это могло произойти?
  2. Почему возврат каретки действительно используется?

Вариант использования: проверка формы на стороне сервера и на стороне клиента для ограничения количества символов для поля.

Ответы [ 2 ]

4 голосов
/ 16 ноября 2010

JavaScript обрабатывает переводы строк как \n, однако, когда вы отправляете форму через HTTP, JavaScript не имеет к ней никакого отношения (кроме проверки текста).Windows обрабатывает символы новой строки как \r\n, поэтому, когда вы используете Windows и нажимаете клавишу возврата в текстовом поле, она фактически вводит \r\n в поле.Когда вы публикуете эти данные на сервере, JavaScript этого не делает (если вы не используете Ajax), а ваш браузер.Ваш браузер будет использовать те же настройки для перевода строки, что и ваша ОС, поэтому вы видите их в своем PHP-файле, но не в JavaScript.Различные ОС по-разному относятся к новым строкам.См. здесь для получения дополнительной информации.

Редактировать
Возврат каретки фактически происходит из старых команд принтера.Возврат каретки означал «отправить картридж принтера обратно в начало строки», а перевод строки (или перевод строки) означал «перейти к следующей строке на странице».

0 голосов
/ 16 ноября 2010

Браузер заменяет \n на \r\n. CR в эти дни необходим только для возврата курсора в первый столбец выходной консоли / терминала и для устаревших систем, которые не могут работать только с LF.

...