Intereting Posts
Как использовать FB Graph для публикации сообщения на ленте (стене) Обработка больших наборов данных через AJAX не приносит никаких преимуществ по скорости Paypal IPN не работает в учетной записи PayPal, но работает правильно в песочнице Отправка электронной почты из html-формы с использованием php Строка PHP CSV для массива Уровни оптимизации OPKache PHP – что это такое? Laravel запрещает пользователям редактировать / просматривать ресурсы других пользователей Двойная линия прерывается с тегом 'pre' и 'nl2br' Лучший способ разработки / управления / разработки повторяющихся задач / календаря Дизайн базы данных для хранения шаблона цвета изображения в MySQL для поиска изображения по цвету Ошибка php cURL в facebook api Реверсивная реализация Ajax с использованием php Написание PHP-расширений с использованием Delphi 2010 и php4Delphi Как использовать библиотеку imagemagick с обработкой? Копировать и вставить категорию в Magento

Передача массива через jQuerys $ .post уменьшает позиции

Я не могу найти подходящих ответов, поэтому задаю новый вопрос.

Я работаю над большим веб-приложением. Теперь в одной части приложения я собираю данные из существующей таблицы ( <table class="myContent">...</table> ) с помощью jQuery. На данный момент код не имеет значения.

Что происходит, я создаю массив с содержимым в нем, и он отлично работает. Содержимое выглядит

 Array ( [artikel] => Array ( [0] => Array ( [id] => 602145-69430 [name] => Legraphic 2 Top [farbe] => Cashmere Blue mix [menge] => 0 [epreis] => 25.95 [gpreis] => 0.00 [uvp] => 64.90 [grt1] => XS [grt2] => S [grt3] => M [grt4] => L [grt5] => XL [grt6] => XXL [grt7] => 0 [grt8] => 0 [grt9] => 0 [grt10] => 0 [grt11] => 0 [grt12] => 0 [gr1] => [gr2] => [gr3] => [gr4] => [gr5] => [gr6] => [gr7] => [gr8] => [gr9] => [gr10] => [gr11] => [gr12] => [ldate] => LD: 01.02.2015 - 28.02.2015 ) [1] => Array ( [id] => 602145-60430 [name] => Legraphic 2 Top [farbe] => Cashmere Blue [menge] => 0 [epreis] => 25.95 [gpreis] => 0.00 [uvp] => 64.90 [grt1] => XS [grt2] => S [grt3] => M [grt4] => L [grt5] => XL [grt6] => XXL [grt7] => 0 [grt8] => 0 [grt9] => 0 [grt10] => 0 [grt11] => 0 [grt12] => 0 [gr1] => [gr2] => [gr3] => [gr4] => [gr5] => [gr6] => [gr7] => [gr8] => [gr9] => [gr10] => [gr11] => [gr12] => [ldate] => LD: 01.02.2015 - 28.02.2015 ) 

и так далее. Теперь после создания этого массива я отправляю его как

 $.post('php/_includes/_ajaxIncludes/ajax.inc.container.php', { section: 'save', data: myArray }); 

Я вызываю ajax.inc.container.php и в этом файле я включаю файл с именем save.php . Я могу переключить инк-файл, изменив параметр раздела.

Теперь вот вопрос:

Созданный массив имеет, например. 40 позиций (или даже больше) в artikel (я сделал console.log(myArray); прямо перед $.post ), но если я print_r($_POST['data']['artikel']); в php я получаю только 31 позицию, и последняя позиция даже не завершена. Выглядит как

 [31] => Array ( [id] => 602147-69430 [name] => Leblock 1 Blouse [farbe] => Cashmere Blue mix [menge] => 0 [epreis] => 35.95 [gpreis] => 0.00 [uvp] => 89.90 ) 

кто-нибудь знает, почему это может произойти?

Дополнительная информация:

post_max_size 64M

РЕДАКТИРОВАТЬ

Очевидно, что отказ происходит из jquery.

Если я добавлю .done() и .fail() в $.post() и вернет ответ console.log(response); он переходит в fail() если есть более 30 позиций.

Таким образом, вы получаете только 31 полный массив элементов, а 32-й элемент имеет только 7 элементов. Каждый элемент имеет 32 элемента.

31 x 32 = 992

992 + 7 = 999

Значение по умолчанию для max_input_vars равно 1000. Возможно, я пропустил один …

Попробуйте увеличить max_input_vars до 2000 и посмотреть, что-нибудь изменится.

Вы отправляете данные как необработанный массив. Вместо попытки разобрать объект JSON в виде строки. например:

 $.post('php/_includes/_ajaxIncludes/ajax.inc.container.php', { section: 'save', data: JSON.stringify(myArray) }); 

Затем проанализируйте эту строку для json-объекта. Я знаю, что это не ответ на ваш вопрос, но это может вам помочь.

Если вы создаете Array в PHP, используйте serialize() и передайте его как строку. Затем deserialize() это.