Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
0 / 0 / 1
Регистрация: 14.06.2017
Сообщений: 13

JSON, AJAX и многомерный ассоциативный "массив"

19.06.2017, 08:20. Показов 6211. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Понимаю, что многомерных ассоциативный массивов как таковых в js нет. Проблема возникла у меня в следующем.
У меня есть скрипт, который собирает динамические данные (построчно) в виде ключ-> Значение.
Получаю вполне похожий на ассоциативный массив объект.
Далее мне необходимо этот массив отправить на сервер php скрипту и там его разобрать построчно.
Структура массива выглядит следующим образом:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
massgp[i] = {
                mfond: sfond,
                mitsgp: sitsgp,
                mdate: sdate,
                mtypekredit: stypekredit,
                mstatyagp: sstatyagp,
                mcomm: scomm,
                msumm: ssumm,
                mpercent: spercent,
                mcontr: scontr,
                mschet: sschet
            };
Где i - это числа от 0 до количества элементов -1;
Далее я пытаюсь его преобразовать в json:
JavaScript
1
var jsondata = JSON.stringify(massgp);
В итоге jsondata получается [] - пустая. Это первая проблема.
Затем отправляю:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({
          type: 'POST',
          url: '/ajaxpf/saveplan.php',
          data: jsondata,
          success: function(data) {
              alert('Отправили, получили ответ');
            alert(data);
          },
          error:  function(xhr, str){
        alert('Возникла ошибка: ' + xhr.responseCode);
          }
        });
На сервере просто пытаюсь прочитать результат:

PHP
1
2
3
$frv = json_decode($_POST['jsondata'], true);
 
  echo var_dump($frv);
Результат конечно же с пустым json так же пустой. Вторая проблема как раз заключается в этом: как посмотреть структуру массива (ну а далее я думаю уже смогу оббежать массив построчно)

Добавлено через 1 час 50 минут
смог закодировать массив в строку json вида:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[{"mfond":"32",
"mitsgp":"1",
"mdate":"01.06.2017",
"mtypekredit":"1",
"mstatyagp":"39",
"mcomm":"сс",
"msumm":"111",
"mpercent":"1",
"mcontr":"Фирма 1",
"mschet":"1"},
{"mfond":"32",
"mitsgp":"1",
"mdate":"02.06.2017",
"mtypekredit":"1",
"mstatyagp":"43",
"mcomm":"вв",
"msumm":"222",
"mpercent":"2",
"mcontr":"Фирма 2",
"mschet":"1"}]
На сервере пробую:
PHP
1
2
3
4
$ress = json_decode($_POST, true);
 
 
 echo var_dump($ress);
В результате получаю в ответ ошибку:
<!--error--><br />
<b>Warning</b>: json_decode() expects parameter 1 to be string, array given in <b>Z:\home\pf\www\ajaxpf\saveplan.php</b> on line <b>6</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script>NULL

Как то на сервере неправильно обрабатываю?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2017, 08:20
Ответы с готовыми решениями:

ajax передать многомерный массив
Подскажите как проще всего передать многомерный массив с помощью ajax в php-функцию Я пытался упаковать массив в виде строки, а потом...

Как ассоциативный массив из PHP передать в Ajax и вывести на страницу
Добрый день. В name.php я получаю из БД - ассоциативный массив $rows. Ajax принимает этот массив, но выводит на экран Array ...

Ассоциативный массив из php при преобразовании в json теряет порядок элементов
Ассоциативный массив из php при преобразовании в json теряет порядок элементов В js прилетает это var obj = jQuery.parseJSON(', ...

2
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
19.06.2017, 09:07
Цитата Сообщение от ShamAnton Посмотреть сообщение
PHP
1
$ress = json_decode($_POST, true);
Как то на сервере неправильно обрабатываю?
Конечно не правильно, json_decode ожидает JSON-строку, а вы подсовываете массив $_POST. В первом же примере правильно было. Не торопитесь

Добавлено через 3 минуты
Кстати:
JavaScript
1
2
3
4
5
6
var jsondata = JSON.stringify(massgp);
$.ajax({
  // ...
  data: jsondata,
  // ...
});
Чтобы на сервере данные были в $_POST['jsondata'] надо отправлять так:
JavaScript
1
2
3
4
5
6
7
8
var jsondata = JSON.stringify(massgp);
$.ajax({
  // ...
  data: {
    jsondata: jsondata; // или не выделять переменную #=> jsondata: JSON.stringify(massgp)
  },
  // ...
});
1
0 / 0 / 1
Регистрация: 14.06.2017
Сообщений: 13
19.06.2017, 10:09  [ТС]
Спасибо!
Итоговый рабочий код:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var jsondata = JSON.stringify(massgp);
         $.ajax({
          type: 'POST',
          url: '/ajaxpf/saveplan.php',
          data: {
    jsondata: jsondata 
  },
          success: function(data) {
              alert('Отправили, получили ответ');
            alert(data);
          },
          error:  function(xhr, str){
        alert('Возникла ошибка: ' + xhr.responseCode);
          }
        });
На сервере смотрю структуру:
PHP
1
2
3
$ress = json_decode($_POST['jsondata'], true);
 
 echo var_dump($ress);
В итоге получаю то, что хотел:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
array(2) {
  [0]=>
  array(10) {
    ["mfond"]=>
    string(2) "32"
    ["mitsgp"]=>
    string(1) "1"
    ["mdate"]=>
    string(10) "01.06.2017"
    ["mtypekredit"]=>
    string(1) "1"
    ["mstatyagp"]=>
    string(2) "39"
    ["mcomm"]=>
    string(4) "com1"
    ["msumm"]=>
    string(3) "111"
    ["mpercent"]=>
    string(1) "1"
    ["mcontr"]=>
    string(55) "Фирма 1"
    ["mschet"]=>
    string(1) "1"
  }
  [1]=>
  array(10) {
    ["mfond"]=>
    string(2) "32"
    ["mitsgp"]=>
    string(1) "1"
    ["mdate"]=>
    string(10) "02.06.2017"
    ["mtypekredit"]=>
    string(1) "1"
    ["mstatyagp"]=>
    string(2) "43"
    ["mcomm"]=>
    string(4) "com2"
    ["msumm"]=>
    string(4) "2222"
    ["mpercent"]=>
    string(1) "2"
    ["mcontr"]=>
    string(0) "Фирма 2"
    ["mschet"]=>
    string(1) "1"
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.06.2017, 10:09
Помогаю со студенческими работами здесь

Как отсортировать функцией sort многомерный ассоциативный массив?
пример попытки отсортировать многомерный массив по полю full_time: var array = { &quot;2685&quot;: { &quot;deal_title&quot;:...

Многомерный массив в JSON
Доброго всем времени суток! Плиз подскажите как преобразовать многомерный массив в JSON??!??

Многомерный ассоциативный массив
Создайте ассоциативный массив, содержащий информацию о пользователях (ФИО, возраст, количество посещений страницы). Выведите всю...

Многомерный ассоциативный массив
Многомерный ассоциативный массив с данными, каждый элемент должен содержать в себе Марку автомобиля,номер авто и страну издателя. Хватит...

Многомерный ассоциативный массив
Сервер отдает массив вида (JSON): $item=&gt;&quot;val&quot;; Как создать такой же, только в Java, чтоб потом по нему пройтись циклом обрабатывая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru