Я не могу найти подходящих ответов, поэтому задаю новый вопрос.
Я работаю над большим веб-приложением. Теперь в одной части приложения я собираю данные из существующей таблицы ( <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()
это.