Проблема с переводом строки при передаче текста с javascript на php с использованием ajax - PullRequest
0 голосов
/ 16 апреля 2020

Мне нужно передать кучу текста из javascript в php с помощью ajax и сохранить его в базе данных. Я могу использовать только javascript, а не jquery. Этот текст должен включать символ новой строки и такие символы, как {}!@#$%^&*/?(){}.

Значение, которое я передал, находится в ассоциативном массиве { id:[], text:[] }, поэтому я использую encodeURIComponent() для текста [], а затем JSON.stringify() его. Со стороны PHP я использую urldecode() и json_decode() для декодирования текста.

Вот как я делаю вызов ajax с javascript:

var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() { //blah blah }
xhr.send(params);

Теперь проблема возникает, когда в тексте есть новая строка. json_decode () будет выпускать NULL, если есть новая строка. Почему это так?

Это решение, которое я придумала. Я заметил, что encodeURIComponent() изменит перевод строки на %0A. Поэтому, если я использую регулярное выражение для преобразования каждого %0A в \n. Проблема решена. Но опять же, почему? Почему urldecode() на PHP стороне не удалось правильно преобразовать новую строку?

...