Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2020, 08:57
Аспирант
Отправить личное сообщение для Alehana Посмотреть профиль Найти все сообщения от Alehana
 
Регистрация: 22.01.2019
Сообщений: 61

Как передать в ajax масссив в форме ?
Написал скрипт, передающий в ajax данные в форме.
let fd = new FormData;
                        fd.append("User",object);
                        $.ajax({
                            url:"/WorkAdress",
                            data: fd,
                            processData: false,
                            contentType: false,
                            type: 'POST',
                            success: function (result) {
                                let data=JSON.parse(result);
                                console.log(data);
                             
                            }
                        });

В обработчике
$object=json_encode($_POST["User"]);
echo $object


С простыми переменными вроде
let object="Name" ;

это нормально работает , а при попытке задать массив
let object=new Map([["name","Иван"],["famili","Иванов"]]);

выдает [object,map];
Как его переделать. чтобы мог нормально обрабатывать массивы ?
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2020, 09:31
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,691

FormData.append (name, value)
value может быть строкой, блобом или файлом.
А что вы хотите передать?
Один параметр "User" со значением какой то строки, например JSON
('[["name","Иван"],["famili","Иванов"]]')?
Или много параметров?
"name":"Иван"
"famili":"Иванов"
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2020, 09:59
Аспирант
Отправить личное сообщение для Alehana Посмотреть профиль Найти все сообщения от Alehana
 
Регистрация: 22.01.2019
Сообщений: 61

Я хочу передать все переменные. содержащиеся в массиве без необходимости записывать их отдельно. Чтобы было не так.
let ig=new Map([["name","Иван"],["famili","Иванов"]]);
let fd = new FormData;
fd.apend("name",ig["name"]);
fd.apend("famili",ig["famili"]);

а так
let ig=new Map([["name","Иван"],["famili","Иванов"]]);
let fd = new FormData;
fd.apend("User",ig);
Ответить с цитированием
  #4 (permalink)  
Старый 08.04.2020, 10:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

fd.append("User", JSON.stringify([...object]));
Ответить с цитированием
  #5 (permalink)  
Старый 08.04.2020, 10:16
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,691

Сообщение от Alehana Посмотреть сообщение
а так
let ig=new Map([["name","Иван"],["famili","Иванов"]]);
let fd = new FormData;
fd.apend("User",ig);
Но ig может быть толь строкой в данном случае.
Тогда этот Map надо преобразовать в строку JSON

let igs = JSON.stringify([...ig])

получим строку '[["name","Иван"],["famili","Иванов"]]'
и тогда

fd.apend("User",igs)

Последний раз редактировалось voraa, 08.04.2020 в 10:20.
Ответить с цитированием
  #6 (permalink)  
Старый 08.04.2020, 10:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Alehana
В обработчике
$object=json_encode($_POST["User"]);
json_decode($_POST["User"]);
Ответить с цитированием
  #7 (permalink)  
Старый 08.04.2020, 12:04
Аспирант
Отправить личное сообщение для Alehana Посмотреть профиль Найти все сообщения от Alehana
 
Регистрация: 22.01.2019
Сообщений: 61

У меня почемуто в пустую строку преобразует.
let ig=new Map([["name","Иван"],["famili","Иванов"]]);
console.log(ig);//Итог Map { name → "Иван", famili → "Иванов" }
let its=JSON.stringify(ig);
console.log(its);//Итог {}

Последний раз редактировалось Alehana, 08.04.2020 в 12:14.
Ответить с цитированием
  #8 (permalink)  
Старый 08.04.2020, 12:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если это все, что нужно передать, не проще ли вообще эту лишнюю писанину удалить из кода?
Ответить с цитированием
  #9 (permalink)  
Старый 08.04.2020, 12:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Alehana,
let its=JSON.stringify([...ig]);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать массив объектов через ajax finlolo AJAX и COMET 8 16.01.2019 17:34
Как передать форме значение переменной, вычисленной ранее в скрипте в ifame animator84 Общие вопросы Javascript 0 07.10.2018 18:33
Как передать дополнительный параметр через AJAX? allanmiln AJAX и COMET 2 17.11.2013 02:21
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
Как в страницу подгружаемую через AJAX передать $_GET? pagal AJAX и COMET 7 08.11.2011 21:09