[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с парсингом массивов передаваемых из форм
BlackCat
Имеются многомерные массивы передающиеся через форму.

При передаче формы напрямую скрипту - всё работает замечательно.
Если передавать через аякс все массивы регистрируются в $_POST не как массив а как переменная с именем массива. Как поправить ? Более подробное описание ниже.


Типа
<input name="attachment[0][0][type]" value="music">

При непосредственной стандартной передаче они регистрируются как
$_POST[attachment][0][0][type] = 'music';


При подкличении AJAX передатчика форм все значения формируются в одну переменную вида:

description__:__Описание текущего опроса|element_id__:__|element_type__:__news|can_vote_all__:__1|answers_max__:__|answers_alternative_ max__:__|undefined__:__|answer_0__:__|answer_1__:__|undefined__:__photo|undefined__:__1|attachment[0][0]['link']__:__http://php.net/manual/ru/function.strstr.php|attachment[0][0]['type']__:__photo|attachment[1][1]['link']__:__http://php.net/manual/ru/function.strstr.p  hp|attachment[1][1]['type']__:__photo|poll_add__:__go|


Затем PHP обработчик разбивает данную переменную и опять загоняет в массив $_POST

<?php
// обработчик ajax формы
class formajax
{

function __construct()
{

if(isset($_POST['formdata']))
{

$formdata = explode('|',$_POST['formdata']);
unset($_POST['formdata']);
foreach($formdata as $data)
{
// echo $data.'<br />';
if(!empty($data))
{
$value = explode('__:__',$data);
// определяем является ли переменная массивом
$_POST[$value[0]] = $value[1];

// $_POST[] = array($value[0] => $value[1]);
}
}
}
}
}

?>



Проблема в том что массивы затем регистрируются как
$_POST[attachment[0][0][type]] = 'link';


print_r выдаёт их как:

[attachment[0][0]['link']] => http://www.youtube.com/watch?v=5pZynYe0r-g
[attachment[0][0]['type']] => photo


т.е. не как массив а просто как переменную с именем attachment[0][0]['link'].
Как лечить ? Спасибо



Спустя 1 минута, 41 секунда (21.05.2012 - 09:31) alexbel2404 написал(а):
а зачем обратно в post пихать то? что за бред?

Спустя 57 минут, 18 секунд (21.05.2012 - 10:28) SlavaFr написал(а):
я бы начинал с javascript лечение, да так, чтоб через аякс нормальный JSON обект передовался.

Спустя 13 часов, 39 минут, 48 секунд (22.05.2012 - 00:08) BlackCat написал(а):
а, т.е. передавать json, а потом декодировать ?

А POST - чтобы не менять логику приложения изначальную....

Спустя 11 часов, 12 минут, 7 секунд (22.05.2012 - 11:20) SlavaFr написал(а):

Спустя 21 минута, 53 секунды (22.05.2012 - 11:42) BlackCat написал(а):
Я был бы благодарен за совет как починить текущий скрипт и научить его преоборазовывать переменные содержащие [] в массивы ?

Спустя 1 час, 13 минут, 58 секунд (22.05.2012 - 12:56) BlackCat написал(а):
Есть ли красивое решение которое позволит создать многоуровневый массив из
строки "attachment[1][1][type]" ?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.