За последние 24 часа нас посетили 16687 программистов и 1594 робота. Сейчас ищут 1469 программистов ...

Как сформировать json в переменной и отправить его? Ошибка

Тема в разделе "JavaScript и AJAX", создана пользователем Сереганек, 20 ноя 2017.

  1. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Что не так в этом фрагменте? В пост-запросе, в параметрах я вижу свою отправляемую json-строку, но по ней написано "No properties". Если бы json был корректный, то я бы получил список всех параметров.
    Вот так я формирую json:

    Код (Text):
    1.  
    2.             var JsonString = "{" +
    3.                 "\"tab\": \"People\"," +
    4.                 "\"company_url\":" + company_url +
    5.                 ",\"company_name\":" + company_name +
    6.                 ",\"users\": [" +
    7.                     "{" +
    8.                         "\"firstName\":" + firstName +
    9.                         ",\"lastName\":" + lastName +
    10.                         ",\"contact_position\":" + contact_position +
    11.                         ",\"contact_location\":" + contact_location +
    12.                         ",\"linked_in\":" + linked_in +
    13.                         ",\"facebook\":" + facebook +
    14.                         ",\"twitter\":" + twitter +
    15.                         ",\"google_plus\":" + google_plus +
    16.                     "}" +
    17.                 "]" +
    18.             "}";
    И отправка запроса:

    Код (Text):
    1. var json = JSON.stringify(JsonString);
    2. xhr.open('POST', 'http://127.0.0.1', true);
    3. xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');
    4. ...
    5. xhr.send(json);
    На сервере при преобразовании JSON в массив получаю пустой массив.

    Мне кажется, что мой JSON определяется как строка. Как этого избежать? Формировать сам JSON нужно будет в строке, в цикле. Пока цикла нет.
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Вот же. Формировать ничего не надо.
     
    Сереганек нравится это.
  3. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Да, действительно это проще, чем казалось. Только теперь не понятно как мне добавлять туда переметры в цикле.

    Делаю так:
    Код (Text):
    1.         var jsonString = {
    2.                 "tab": "People",
    3.                 "company_url": company_url,
    4.                 "company_name": company_name,
    5.                 "users": []};
    Затем в цикле добавляю юзеров:
    Код (Text):
    1.             JsonString.users["firstName"] = firstName;
    2.             JsonString.users["lastName"] = lastName;
    3.             JsonString.users["contact_position"] = contact_position;
    4.             JsonString.users["contact_location"] = contact_location;
    5.             JsonString.users["linked_in"] = linked_in;
    6.             JsonString.users["facebook"] = facebook;
    7.             JsonString.users["twitter"] = twitter;
    8.             JsonString.users["google_plus"] = google_plus;
    Но почему-то нассив юзеров при отправке запроса остается пустым. Что не так?
     
    #3 Сереганек, 20 ноя 2017
    Последнее редактирование: 20 ноя 2017
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Собираешь массив и заворачиваешь в JSON после того, как массив уже готов.
    ВСЁ!
     
    Сереганек нравится это.
  5. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    По всей видимости здесь застрял. Не подскажете почему у меня не заполняется массив таким образом?
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Вот. Читай, вникай, осознавай.
    --- Добавлено ---
    Создаешь объект, наполняешь, заворачиваешь в JSON, отправляешь на сервер.
    там разворачиваешь (json_decode($json, true)), и получаешь ассоциативный массив.
     
    Сереганек нравится это.