Есть форма с различным набором input,textarea которые собираются в массив следующим образом: Код (Javascript): var mas=new Array(); //собираем данные полей по классу $('.pole_dan').each(function(i,elem) { var pos=new Array(); //записываем имя поля и его значение pos.push($(this).attr("name"),encodeURIComponent($(this).val())); mas.push(pos); //проверка что поле не заполнено if ($(this).val()=='' || $(this).val()==null ) { error=error+"Не заполнено поле:"+$(this).parent().parent().find('td.nn').html()+"\n"; } }); Далее отправляется все это ajax Код (Javascript): data: ... +'&dan_pol='+JSON.stringify(mas)..... В PHP декодируется PHP: $dan_pol=json_decode($_POST['dan_pol']); И вот тут проблема! Если была форма textarea с переходом новой строки ответ будет PHP: echo var_dump($_POST['dan_pol']); /*string(206) "[....["col0","asd asd zxc"]]"*/ echo var_dump(json_decode($_POST['dan_pol'])); //NULL Я так понял json_decode не работает с переходами новых строк, что подскажите и как с этим бороться?
Нашел на просторах это Код (Javascript): RegExp.escape = function(text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } Получается одна строка, но тоже в ответе null PHP: echo var_dump($_POST['dan_pol']); /*string(206) "[....["col0","беспроводная\\ мышь\\\nфывфы\\\nвапвап"]]"*/ --- Добавлено --- Сам не знаю.. разбираюсь, так var_dump выдает --- Добавлено --- А нет работает только теперь везде флеши..причем при каждом обновлении запроса они увеличиваются в количествах)) в общем нужно регулярку написать, всем спасибо!
Использовал следующую проверку Код (Javascript): RegExp.escape = function(text) { return text.replace(/\n/g, "\\n"); } и все ОК. Оказывается проблема была в функции encodeURIComponent. Без нее конвертация stringify() и декодирование json_decode, проходит на ура, а если перед этим конвертировать данные полученные с помощью функции encodeURIComponent то работает странно и нужно самому экранировать переход строки до функции encodeURIComponent.. --- Добавлено --- Спасибо за наводку, так бы голову ломал в чем проблема!