JSON, AJAX и многомерный ассоциативный “массив” - jQuery

378
19 июня 2017, 21:40

Здравствуйте! Понимаю, что многомерных ассоциативный массивов как таковых в js нет. Проблема возникла у меня в следующем. У меня есть скрипт, который собирает динамические данные (построчно) в виде ключ-> Значение. Получаю вполне похожий на ассоциативный массив объект. Далее мне необходимо этот массив отправить на сервер php скрипту и там его разобрать построчно. Смог получить строку json в переменной serr:

[{"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"}]

Отсылаю через ajax:

 $.ajax({
          type: 'POST',
          url: '/ajaxpf/saveplan.php',
          data: serr,
          success: function(data) {
              alert('Отправили, получили ответ');
            alert(data);
          },
          error:  function(xhr, str){
        alert('Возникла ошибка: ' + xhr.responseCode);
          }
        });

На сервере пробую:

$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
Answer 1

Если вы в самом деле отправляете JSON как строку, то получить её обратно можно так:

$result = json_decode(file_get_contents("php://input"), true);
Answer 2

Общими усилиями вопрос решен: ФОрмируем json и отправляем:

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);
      }
    });

На сервере смотрю структуру:

$ress = json_decode($_POST['jsondata'], true);
 echo var_dump($ress);

Полчаю в итоге то, что и хотел:

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"
}
}
READ ALSO
Как получить доступ к элементу класса из внутреннего класса?

Как получить доступ к элементу класса из внутреннего класса?

Делаю двоичное дерево поиска, которое хранит функцию сравнения элементов cmpПри попытке использовать ее во внутреннем классе iterator меня информируют:

286
Сохранение настроек приложения / Qt 5.8.0

Сохранение настроек приложения / Qt 5.8.0

У меня программа при установке должна создавать локальную базу данных, для хранения настроек самой программыМне нужно где то сохранить,...

257
Elemen Wise произведение обьектов типа Tensor в tensorflow

Elemen Wise произведение обьектов типа Tensor в tensorflow

В tensorflow есть класс tensorflow::TensorДля них не реализована операция operator*

244