Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSON и объем информации 
V
    Опции темы
kostik34
Дата 22.3.2012, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.3.2011

Репутация: нет
Всего: нет



Всем привет.
Столкнулся с такой проблемой. Не могу передать на сервер относительно большой объем информации.
Подробности таковы:
В результате работы скрипта получается массив mass длиной 350. Каждый элемент массива тоже массив длиной 30. Другими словами получаем двумерный массив mass 350х30
Этот массив мне нужно передать на сервер. Для этого я сначала представляю свой массив как объект
Код

var obj = {};
for (i = 0; i<mass.length; i++) {
    obj["a"+i] = mass[i];
}


Затем передаю POSTом
Код

   $.ajax({
   url:'dataparser.php'
   , type:'POST'
   , data:'jsonData=' + $.toJSON(obj)
    , success: function(res) {
                        alert(res);
                    }
                });


Обработчик на сервере
Код

<?php
$data = json_decode($_POST['jsonData']);
$response = 'Получено параметров '.count($data).'\n';
foreach ($data as $key=>$value) {
    $response .= 'Параметр: '.$key.'; Длина: '.count($value).'\n';
}
echo $response;
?>


Но ответ от сервера приходит Получено параметров 0
Warning: Invalid argument supplied for foreach() in dataparser.php on line 4

Если делаю длину исходного массива маленькой, например 
Код

mass.length = 40;


все работает нормально.

В связи с этим, у меня вопрос. Скажите, это я что-то неправильно делаю или это JSON большие объемы не вывозит?
PM MAIL   Вверх
skyboy
Дата 23.3.2012, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



в браузере смотрел — передаются данные?
что в php.ini творится? особенно интересует post_max_size
 
PM MAIL   Вверх
kostik34
Дата 23.3.2012, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.3.2011

Репутация: нет
Всего: нет



Цитата

в браузере смотрел — передаются данные?
что в php.ini творится? особенно интересует post_max_size


В FireBugе посмотрел, данные передаются, но после 35 строки пишется ... Лимит на размер Post был достигнут. Удалено Firebug'ом. ...   

в php.ini  было
post_max_size= 8M
upload_max_filesize = 4M
memory_limit = 128M

поставил побольше

post_max_size= 50M
upload_max_filesize = 20M
memory_limit = 128M

Все равно FireBug показывает ... Лимит на размер Post был достигнут. Удалено Firebug'ом. ...   

Играет роль то, что я Denverе это всё делаю?

Это сообщение отредактировал(а) kostik34 - 23.3.2012, 13:22
PM MAIL   Вверх
ksnk
Дата 23.3.2012, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Надо смотреть что получает сам сервер. У меня складывается впечатление, что большой пост пристрелил сам файрбаг.




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
kostik34
Дата 23.3.2012, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.3.2011

Репутация: нет
Всего: нет



Цитата

Надо смотреть что получает сам сервер.


Я вот сейчас напишу, только сразу не пинайте сильно, а ответьте пожаласта. А как посмотреть  что получает сам сервер?
PM MAIL   Вверх
ksnk
Дата 23.3.2012, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(kostik34 @  23.3.2012,  15:13 Найти цитируемый пост)
А как посмотреть  что получает сам сервер? 

При получении такого запроса можно вывести параметр  $_SERVER['CONTENT_LENGTH'], если он есть. Обычно он содержит размер всего массива данных, передаваемых клиентом для обычных форм. Если данные есть, а в POST ничего нет - сервер отказался принимать данные, если данных нет, то клиент не послал подозрительные данные.
Потом поперебирать методом двоичного деления ;) количество строк, которые исправно передаются. Если получится число, близкое к какому-то круглому значению - нужно искать соответствующие параметры в настройках.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
kostik34
Дата 23.3.2012, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.3.2011

Репутация: нет
Всего: нет



Цитата

можно вывести параметр  $_SERVER['CONTENT_LENGTH']

Параметр показывает 33555, в заголовке запроса Content-Length тоже 33555

Потом я попробовал var_dump($_POST) там данные не все на 43 строчке идёт обрыв

а var_dump($_POST['jsonData'])  = NULL

через json_last_error() выяснил, что ошибка JSON_ERROR_SYNTAX. 


Выяснил, где ошибка была. В 43 строке в массиве была строка с символом & вот на нём и прерывалось все. 

Вот только сейчас ещё одна проблема, в исходном массиве кириллица, ответ от сервера приходит в таком виде µРєСЃСѓР°Р»СЊРЅС‹Рµ Р±РѕСЃРѕРЅРѕР¶РєРё Рё. Как бы перекодировать в нормальный вид?

Это сообщение отредактировал(а) kostik34 - 24.3.2012, 00:03
PM MAIL   Вверх
kostik34
Дата 24.3.2012, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.3.2011

Репутация: нет
Всего: нет



Всё разобрался. Спасибо всем огромное за помощь!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.