Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с JSON

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Alex1984
Отправлено: 29 Июня, 2015 - 11:11:18
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $json_arr = json_encode($block_array);
  3.  
  4. $pager_res = array('<p><div class="pager"> </div>');
  5.  
  6. for($i = 1; $i <= $page_array_size; $i++)
  7. {
  8.     array_push($pager_res, '<input type="button" class="page_button" id="page'.$i.'" value="'.$i.'">');
  9.  
  10.     array_push($pager_res, '<script type="text/javascript">
  11.                         $(document).ready(function(){
  12.                         $.post("http://www.site.de/classes/pager.php",
  13.                         {page: "1", page_array: '.$json_arr.', row_in_page: '.$row_in_page.',
  14.                          css_class: "user_list"}, function(data){
  15.  
  16.                              $(".user_list").replaceWith(data);
  17.                         })
  18.                         });
  19.                         $("#page'.$i.'").click(function(event){
  20.  
  21.                         $.post("http://www.site.de/classes/pager.php",
  22.                         {page: '.$i.', page_array: '.$json_arr.', row_in_page: '.$row_in_page.',
  23.                         css_class: "user_list"}, function(data){
  24.                              //alert('.$i.');
  25.                              $(".user_list").replaceWith(data);
  26.                         })
  27.                         });
  28.                         </script>');
  29. }
  30.  


Есть массив json_array который с помощью jquery отправляется в файл pager.php

PHP:
скопировать код в буфер обмена
  1.  
  2. $page = $_POST['page'];
  3. $page_array = $_POST['page_array'];
  4. $row_in_page = $_POST['row_in_page'];
  5. $css_class = $_POST['css_class'];
  6.  
  7. $page_res = array_chunk($page_array, $row_in_page);
  8.  
  9. $res = implode(' ', $page_res[$page - 1]);
  10.  
  11. echo '<div class="'.$css_class.'">'.$res.'</div>';
  12.  
  13.  


и в общем то все что нужно из этого файла возвращается, но почему то выскакивают ошибки:

Warning: array_chunk() expects parameter 1 to be array, null given in C:\OpenServer\domains\site.de\www\classes\pager.php on line 17

Warning: implode(): Invalid arguments passed in C:\OpenServer\domains\site.de\www\classes\pager.php on line 19

Подскжите откуда ошибки, или почему вообще работает с такими ошибками.
 
 Top
zypikov
Отправлено: 29 Июня, 2015 - 13:07:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Достаточно немного знать английский, чтобы понять какие выдал интерпретатор php.
1) array_chunk() - первый параметр должен быть массивом, а на вход подается null
2) implode() - поскольку array_chunk() отрабатывает с ошибками, а implode() использует $page_res в качестве параметра, то ничего удивительного. Но если дословно - на в функцию передаются неверные аргументы.

Особо код не смотрел но:

PHP:
скопировать код в буфер обмена
  1. $pager_res = array('<p><div class="pager"> </div>');

Зачем массивом объявлять переменную являющуюся строкой?

Цитата:
или почему вообще работает с такими ошибками.

Ну может быть первый раз(если их больше одного) jquery отправляет верные данные, потом нет.


-----
У всего есть обратная сторона.
 
 Top
Alex1984
Отправлено: 29 Июня, 2015 - 14:11:16
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 1 раз(а)




JQuery каждый раз отправляет правильные данные, как переводятся ошибки тоже знаю, не понимаю почему все работает как и должно но выводятся ошибки.

Вот это [0,1,2,3,4,5,6,7,8,9] отправляется скриптом.
Вот это Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 ) приходит в файл. я конечно хз, но по моему это все таки массив и почему на нем выдает ошибку не понимаю

echo gettype($_POST['page_array']); выдает - array

(Отредактировано автором: 29 Июня, 2015 - 15:23:32)

 
 Top
zypikov
Отправлено: 29 Июня, 2015 - 15:23:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Alex1984 пишет:
Вот это Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )
. Это
?

И раз данные закодированы json_encode на клиенте, на должны ли они быть декодированы json_decode на сервере?


-----
У всего есть обратная сторона.
 
 Top
Alex1984
Отправлено: 29 Июня, 2015 - 15:28:49
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 1 раз(а)




Нет, мне уже приходит массив Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )

в скрипте это выглядит так
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.                          $.post("http://www.site.de/classes/pager.php",
  3.                          {page: 3, [b] page_array: [0,1,2,3,4,5,6,7,8,9][/b], row_in_page: 6, css_class: "user_list"},
  4.                          function(data){
  5.                           $(".user_list").replaceWith(data);
  6.                          })
  7.  


выделенная строчка отправляется массивом.

echo gettype($_POST['page_array']); выдает - array

получается что функция gettype видит что это массив, а функция array_chunk не видит ))

var_dump
array(10) { [0]=> string(1) "0" [1]=> string(1) "1" [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(1) "4" [5]=> string(1) "5" [6]=> string(1) "6" [7]=> string(1) "7" [8]=> string(1) "8" [9]=> string(1) "9" }

(Отредактировано автором: 29 Июня, 2015 - 15:31:01)

 
 Top
zypikov
Отправлено: 29 Июня, 2015 - 15:34:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Можете сделать
и результат выложить?


-----
У всего есть обратная сторона.
 
 Top
Alex1984
Отправлено: 29 Июня, 2015 - 16:14:27
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 1 раз(а)




То же самое

array(10) { [0]=> string(1) "0" [1]=> string(1) "1" [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(1) "4" [5]=> string(1) "5" [6]=> string(1) "6" [7]=> string(1) "7" [8]=> string(1) "8" [9]=> string(1) "9" }

я даже так пробовал

PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($_POST['page_array'] as $page_val)
  3. {
  4.     array_push($page_array, $page_val);
  5. }
  6.  


пишет Invalid argument supplied for foreach() но в массив page_array элементы добавляет ))

(Отредактировано автором: 29 Июня, 2015 - 16:17:17)

 
 Top
zypikov
Отправлено: 29 Июня, 2015 - 16:17:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Вы отредактировали пост, когда я писал свой последний. Поэтому дубликат вышел
Ну оберните так:

PHP:
скопировать код в буфер обмена
  1.  
  2. if(is_array($page_array)){
  3. $page_res = array_chunk($page_array, $row_in_page);
  4. $res = implode(' ', $page_res[$page - 1]);
  5. echo '<div class="'.$css_class.'">'.$res.'</div>';
  6. }
  7.  


-----
У всего есть обратная сторона.
 
 Top
Alex1984
Отправлено: 29 Июня, 2015 - 16:23:27
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2015  


Помог: 1 раз(а)




Помогло с проверкой спасибо, ошибки пропали, хотя в чем смысл не очень понятно, если is_array проходит значит это массив, тогда чего бы ему без проверки не работать

Другая ошибка появилась, но в общем то как работало так и работает

(Отредактировано автором: 29 Июня, 2015 - 16:26:33)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB