Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Построение $.post через each (https://javascript.ru/forum/jquery/34713-postroenie-%24-post-cherez-each.html)

nevolov 16.01.2013 07:22

Построение $.post через each
 
О великие гуру JS и JQuery взываю к вам:help:
Третьи сутки не могу въехать как правильно сделать.....(((((((((((
Смысл в том, что нужно при передаче по onsubmit у form передать методом $.post значения.

У form все input'ы пронумерованы по name, но количество их изначально не известно и может меняться со временем, поэтому их именно "надергать" надо в post-запрос.

Есть рабочий код:
<form action="javascript:this.form.action = actform;" onsubmit="
        actform=
        $.post( \"http://mysite.ru/index.php?id=61\", { 
        id: $(\"input[name='id']\").val(),
        product: $(\"input[name='product']\").val(),
        price: $(\"input[name='price']\").val(),
        sum: $(\"input[name='sum']\").val(),
        number: $(\"input[name='number']\").val(),
        },
        function(data) { $.colorbox({html: data}); }
        );">

Код умеет передавать значение одной "строки" формы (со значениями без индексов) во всплывающее окно Colorbox'а.

Задача стоит следующая, нужно реализовать что-то типа этого:
<form action="javascript:this.form.action = actform;" onsubmit="
        $.post( \"http://mysite.ru/index.php?id=61\", { 

<!-- Тут какой-то условный цикл, который переберет значения от 1 до n -->

        id[n]: $(\"input[name='id[n]']\").val(),
        product[n]: $(\"input[name='product[n]']\").val(),
        price[n]: $(\"input[name='price[n]']\").val(),
        sum[n]: $(\"input[name='sum[n]']\").val(),
        number[n]: $(\"input[name='number[n]']\").val(),

<!-- конец цикла -->

        },
        function(data) { $.colorbox({html: data}); }
        );">

Количество n могу получить, а вот перебрать от 1 до этого значения (чтобы получались данные наподобие sum3, price1, number5 и т.д.) не хватает ума:blink:

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

ОлегА 16.01.2013 07:57

<form action="javascript:this.form.action = actform;" id="myForm">
<input type="text" name="id[]">
<input type="text" name="product[]">
<input type="text" name="price[]">
....
</form>

$(form).ajaxSubmit({
    success  : function(data) {
        alert(data)
    }
});


ну как то так вроде

nevolov 16.01.2013 10:28

Не совсем понятно... точнее совсем непонятно...
А на что обработчик вешать? Это по онклику или по онсабмину должно выполняться? И самое главное непонятно как с этой конструкцией должен colorbox открыться?

p.s. у меня передача данных идет из всплывающего окна (точнее блока) colorbox на страницу, которая должна открыться в нем же. Здесь собственно и вся загвоздка иначе давно бы уже все и куда надо смог передать(((

Serg_pnz 16.01.2013 11:27

Вот образец с выносом мозга, объединяет перед отправкой данные с двух форм.

var datas1 = {}, datas2 = {} 
	$.map($('#zak').serializeArray(), function(n, i){
		datas1[n['name']] = n['value'];
	});
	$.map($('#rasform').serializeArray(), function(n, i){
		datas2[i] = n['value'];
	});
	$.extend(datas1, datas2);


		$.ajax({
			url: 'ajax/sendEmail.php',
			data: datas1,
			type: 'post',
			beforeSend:function(){
				$('#bottons2').html('...Идет подготовка к отправке');
			},
			success: function(msg){
				$('#bottons2').html(msg);
			}
		});

nevolov 16.01.2013 12:08

ОлегА, Разобрался с вашим методом!))))))) Огромное преогромное спасибище:dance:
Чтож вы то сразу не сказали только что надо сначала библиотеку jquery.form.js подгрузить, 4 часа убил чтоб разобраться, потом только понял что еще и файлик нужен)))))))):D

nevolov 16.01.2013 12:11

Serg_pnz,
Интересно тоже, попробую и так обязательно)))))))) Там тоже библиотеку надо какую-нибудь качать?;) :p

Serg_pnz 16.01.2013 13:52

нет

ОлегА 17.01.2013 07:54

nevolov, ах да, забыл, что это плагин,ну главное разобрались!


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