Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   $.post + много масивов (https://javascript.ru/forum/jquery/10438-%24-post-mnogo-masivov.html)

dr83 19.09.2011 08:00

только почему get если передается $.post?
уважаемый korner, у вас скрипт заработал... если можно первые строки php

melky 19.09.2011 09:07

или post, какая разница

*надо было написать request

dr83 19.09.2011 10:06

с Request получается, но это надо прописывать 50-60 Requestov для каждого из полей формы...
ну может я и правда тупой, но сколько форумов и документации не прочитайл, я так и не понял...

1) var fields = .. serialize (или serializeArray) (); (упаковываем пары значений поле - значение)
2) $.post (обработчик, fields, function (data) ... передаем эти значения в обработчик
3) как распаковать эти данные? был бы признателен, если у кого есть под рукой ссылка на пример...
причем распаковать "автоматом"...
чтоб получить в переменную с именем поля значения - без многочисленных
$id = $_POST['id'];
$nomer = $_POST ['nomer']
у меня в форме может быть до 60 заполненных полей

korner 20.09.2011 18:33

Да, понимаю, я тоже раньше думал как это сделать.
Мне нужно было сохранять настройки движка, там тоже было от 1 поля до бесконечности.

Есть два варианта сбора данных.
Первый самый простой, это сделать функцией extract($_POST);
Она переводит все что было передано через пост запрос в переменные с названием.

То есть если у вас на станицы пишется на подобие так.
<input type="text" name="id" />
<input type="text" name="nomer" />

То в php функция extract($_POST) вернет в переменные и обратится можно будет к ним так:
extract($_POST);
print $id; //input name="id"
print $nomer;//nput name="nomer"


Есть второй способ пожалуй самый разумный.
Это собирать данный всего с одним массивом.
На станицы должно быть написано так:
<input type="text" name="save[id]" />
<input type="text" name="save[nomer]" />

Как видно в name я добавил в массив save.
В php мы получим только одну переменную $_POST['save'], к которому можно обратится так;
$save = $_POST['save'];
print $save['id']; //input name="save[id]"
print $save['nomer'];//nput name="save[nomer]"


Вроде объяснил но на всякий дам пример.
Код HTML index.html;
<script>
function get_post_go(){
var fields = $('input').serializeArray();
$.post('save.php?action=update', fields, function(data){
    alert(data.id); // id
    alert(data.nomer); //  nomer

},'json');
}
</script>


<input type="text" name="save[id]" />
<input type="text" name="save[nomer]" />

<input type="submit" value="Отправить" onclick="get_post_go()" />

Код PHP save.php;
<?php 

$save = $_POST['save']; // Получаем результат также можно обработать циклом foreach

//Обробатываем данные
//$save['id'] //массив id
//$save['nomer'] //массив nomer

//Выводим результат в формате json
echo json_encode(array("id"=>$save['id'],"nomer"=>$save['nomer'])); 

?>


Часовой пояс GMT +3, время: 19:17.