Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128

Через ajax отправить данные в массиве

08.08.2014, 00:36. Показов 4282. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть таблица, в которой выводятся позиции
где $x - номер записи
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
<table>
    <tr id="<?=$x?>">
      <td id="id_prod-<?=$x?>"><?=$row['id']?></td>
      <td><input type="text" name="count" id="count-<?=$x?>" /> </td>
     <td id="price-<?=$x?>"><?=$row['price']?></td>
      <td id="sum_tr<?=$x?>"><?=$sum?></td>
   </tr> 
</table>
<div>Всего позиций <span id="counttr"><?=$count?></span></div>
<div>Общая сумма <span id="res"><?=$res?></span></div>
<button type="button" name="make_order" id="make_order" onclick="order()" >Отправить данные</button>
Хотелось бы через ajax, отправить данные в массиве
Array ([0] => Array( [x] => Array ( [0] => id_prod [1] => count [2] => price [3] => sum )) [1] => res)
x - был бы номером записи,
не получается у меня сделать((

Вот как я понимаю: надо сделать в js массив с данными чтобы передать его в json в php для обработки
Действия: чтобы получить все данные, необходимо сначала от каждой позиции собрать данные, ввести их в массив1,
потом массив1 добавить в массив2, создавая ключ к массиву1 из количества записей
ну и массив2 (данные о позициях) и общую сумму также добавить в массив3
и уже массив 3 передавать через ajax
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var sumtr = $("#counttr").text(); // количество записей
var res = $('#res').text(); // общая сумма
 
var arr = array(); // создаем массив
var arr2 = array();
           
         /* Если бы я задала № позиции, то данные получила бы 
            var count = $('#count-'+recordId).val();
            var sum = +$('#sum-'+recordId).text();
            var idprod = $('#id_prod-'+recordId).text();
            var price = +$('#price-'+recordId).text();*/
 
 
          for (i=1;i<=sumtr;i++) {
           arr2 [i] = array({0:$('#id_prod-'+i), 1:$('#price-'+i), 2:$('#count-'+i), 3:$('#sum-'+i)});              
             
         arr = array ({0: arr2,1: res});
         
    alert ("Получила массив:" +arr)
          }
В общем скорее всего я опять перемудрила.. Пож помогите разобраться)

Добавлено через 7 часов 40 минут
Ребята ну пож помогите разобраться и понять очень очень надо)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.08.2014, 00:36
Ответы с готовыми решениями:

Отправить данные ajax из поля tinymce
Здравствуйте,есть поле с id=&quot;field&quot; к нему прикручивается tinymce Как мне при отправке ajax-ом получить данные которые мы ввели в...

Отправить массив через ajax
Нужно посредством ajax на сервер отправить массив, а данные сформировать отсюда: &lt;input class=&quot;check&quot; data-id=&quot;S&quot;...

Необходимо отправить форму через Ajax
Добрый день. На странице входа необходимо отправить форму через Ajax. Но в моем коде даже при правильно введенных данных в форму выдает...

32
SV
55 / 55 / 25
Регистрация: 03.08.2014
Сообщений: 258
08.08.2014, 02:57
Лучший ответ Сообщение было отмечено wredyatina как решение

Решение

Что бы не нужно было писать что то такое - было бы круто добавить классы к тем элементам, в которых хранится значение, ну там <td class="price" > и подобное.

Что то типа такого, я не проверял на ошибки конечно, но логика думаю понятна
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
var data = array();
$('table>tr').each(function(i,v){
        var id_prod = $(v).children("td[id^='id_prod-']").text();
        var count = $(v).find("input[id^='count-']").text();
        var sum = $(v).children("td[id^='sum_tr']").text();
        var price = $(v).children("td[id^='price-']").text();
 
        data.push({
            'id_prod': id_prod,
            'count': count
        });
});
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
09.08.2014, 01:47  [ТС]
Вот что у меня получилось: установила классы для всего: tr и всех данных
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var data = new Array();      
    $('.tr_all').each(function(index,value){
    var id_prod = $(value).find(".id_prod-td").val();
    var count = $(value).find(".count-td").val();
    var sum = $(value).children(".sum-td").text();
        var price = $(value).children(".price-td").text();
    
data.push({
                       'id_prod': id_prod,
            'count': count,
            'sum': sum,
            'price': price
        });
        
}); alert (data)
выводит [object Object]
правда понимает количество позиций:
если их три, то [object Object], [object Object], [object Object]

Правда я не поняла где в нашей записи index, объясните пож)
вот пример, который я понимаю
JavaScript
1
2
3
$.each([ v1, v2, v3 ], function( index, value ) {
  alert( index + ": " + value );
});
вывод: 0:v1 1:v2 2:v3
а у нас index?

Добавлено через 8 минут
И еще делала проверку получения данных
JavaScript
1
2
3
4
alert (id_prod, count, price, sum ); // не работает, выводит только id_prod
// а если делать по отдельности, то данные он понимает
alert (count); // или
alert (price);
0
SV
55 / 55 / 25
Регистрация: 03.08.2014
Сообщений: 258
09.08.2014, 02:03
Ну там получается массив из 3х объектов, в объектах данные. В чем проблема то? Вам так жизнь без индекса не мила?

Не надо дебажить ЖС скрипты алекртами Сделайте например console.trace(data) и посмотрите что там (посмотреть во вкладке console)
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
09.08.2014, 02:12  [ТС]
Ой а я думала все спят))
только вот у меня почему-то ни console.log, ни console.trace не работают, уже пробовала)
Цитата Сообщение от SV Посмотреть сообщение
Не надо дебажить ЖС скрипты алекртами
Ну я учусь еще)))
Так я понимаю теперь я могу пробовать передавать массив data, через ajax?)

Добавлено через 2 минуты
Цитата Сообщение от SV Посмотреть сообщение
Ну там получается массив из 3х объектов, в объектах данные. В чем проблема то? Вам так жизнь без индекса не мила?
Мила, просто не совсем поняла где он... а мне все понимать надо)))
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
09.08.2014, 02:17
Так может будет работать
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var data = new Array();      
    $('.tr_all').each(function(index,value){
    var id_prod = $(value).find(.id_prod-td).val();
    var count = $(value).find(.count-td).val();
    var sum = $(value).children(.sum-td).text();
        var price = $(value).children(.price-td).text();
    
data.push({
                       'id_prod': id_prod,
            'count': count,
            'sum': sum,
            'price': price
        });
        
}); alert (data)
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
09.08.2014, 02:19  [ТС]
Игорь[Igor], так он и дает [object Object]
а если alert поставить выше, то выводит только первую запись)
0
SV
55 / 55 / 25
Регистрация: 03.08.2014
Сообщений: 258
09.08.2014, 02:24
Цитата Сообщение от wredyatina Посмотреть сообщение
Так я понимаю теперь я могу пробовать передавать массив data
пробуйте, разрешаю.

Цитата Сообщение от wredyatina Посмотреть сообщение
только вот у меня почему-то ни console.log, ни console.trace
Что значит не работают? Еще как работаю, выводят всякое в console. Какой у вас браузер то?

Добавлено через 36 секунд
Цитата Сообщение от wredyatina Посмотреть сообщение
Мила, просто не совсем поняла где он... а мне все понимать надо)))
я его съел

Добавлено через 36 секунд
Цитата Сообщение от wredyatina Посмотреть сообщение
Ой а я думала все спят))
приличные кодеры ночами не спят
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
09.08.2014, 02:25
wredyatina, в коде двойную кавычку убрал - "
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
09.08.2014, 02:26  [ТС]
SV, повеселили ответами, спс))))
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
09.08.2014, 02:26
Цитата Сообщение от SV Посмотреть сообщение
приличные кодеры ночами не спят
Они собираются, собираются, собиряются и ни как не соберуться идти спать
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
09.08.2014, 02:27  [ТС]
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
в коде двойную кавычку убрал - "
в корне?)

Добавлено через 26 секунд
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
Они собираются, собираются, собиряются и ни как не соберуться идти спать
Я уже три часа собираюсь)))
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
09.08.2014, 02:29
В скрипте
Цитата Сообщение от wredyatina Посмотреть сообщение
Я уже три часа собираюсь)))
Я вторые сутки тогда собираюсь
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
09.08.2014, 02:32  [ТС]
Сейчас доделаю и со спокойной душой спать лягу)) а то ведь не усну, буду думать как же сделать))
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
09.08.2014, 02:35
А вообще так
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var data = new Array();      
    $('.tr_all').each(function(index,value){
    var id_prod = $(value).find("#id_prod-td").val();
    var count = $(value).find("#count-td").val();
    var sum = $(value).children("#sum-td").text();
        var price = $(value).children("#price-td").text();
    
data.push({
                       'id_prod': id_prod,
            'count': count,
            'sum': sum,
            'price': price
        });
        
}); alert (data)
Добавлено через 1 минуту
Ненадо думать надо идти спать, а утром или когда там наступит утро, решение само придет
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
09.08.2014, 02:46  [ТС]
Так
JavaScript
1
2
3
4
5
6
7
8
9
10
11
$.ajax({
            url:"con.php",
            dataType: 'json',
            data: data,
            error:function(){ alert ('Ошибка')},
            success: function(){
                alert ('Успешно')
            }
        });
        
        return false;
Это я передаю в php
а уже в con.php делаю $result_json = json_decode(data); да? или я опять не в том направлении?)


Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
Ненадо думать надо идти спать, а утром или когда там наступит утро, решение само придет
Если бы..))) всю ночь во сне буду решать и выходы искать, а утром голова вообще деревянная будет))
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
09.08.2014, 02:53
Все правильно, вот аналогичный пример
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Функция отправки сообщения
    function send()
    {
        //Считываем сообщение из поля ввода с id mess_to_add
        var mess=$("#mess_to_send").val();
        // Отсылаем паметры
       $.ajax({
                type: "POST",
                url: "add_mess.php",
                data:"mess="+mess,
                // Выводим то что вернул PHP
                success: function(html)
                {
                    //Если все успешно, загружаем сообщения
                    load_messes();
                    //Очищаем форму ввода сообщения
                    $("#mess_to_send").val('');
                }
        });
    }
Добавлено через 1 минуту
а в php уже
PHP
1
$mess=$_POST['mess'];
принимает и дальше добавляем в БД
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
09.08.2014, 04:14  [ТС]
Игорь[Igor], спс с обычным ajax'ом разобралась)
тут массивы интереснее))

Добавлено через 9 минут
Сделала:
PHP
1
2
3
4
$mes = $_REQUEST['mes'];
$data = json_decode($mes);
$response = 'Получено параметров '.count($data).'\n';
echo $response;
JavaScript
1
2
3
4
5
6
7
8
9
 $.ajax({
            url:"con.php",
        dataType: 'json',
            data: 'mes='+data,
        success: function(res) {
                alert(res); }
        });
        
        return false;
Ничего не выходит почему?
Хочу проверить массив как дошел.

Добавлено через 6 минут
А так null выходит((

Добавлено через 43 минуты
Я думаю может он у меня не получает данные все таки?
JavaScript
1
2
3
4
5
6
data.push({
            'id_prod': id_prod,
            'count': count,
            'sum': sum,
            'price': price
        });
и консоли не работают, чтобы проверить.. а кроме консолей чем можно массив вывести?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
09.08.2014, 13:01
Цитата Сообщение от wredyatina Посмотреть сообщение
только вот у меня почему-то ни console.log, ни console.trace не работают, уже пробовала
Есть подозрение, что консоль Вы запускаете уже де-факто, для проверки. В том же Opera Dragonfly консоль должна быть открыта в момент выполнения скрипта.
0
2 / 0 / 1
Регистрация: 06.09.2011
Сообщений: 128
09.08.2014, 15:31  [ТС]
FraidZZ, Я через Хром)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.08.2014, 15:31
Помогаю со студенческими работами здесь

Отправить на сервер json через ajax
как отправить на сервер json с помощью ajax. данные для json в форме ввода, надо построить json и передать на сервер. доп. вопрос: надо...

Как отправить через ajax одну из несколько форм с одинаковым id?
здравствуйте хочу отправить через ajax форму: &lt;?php $result = $mysqli-&gt;query(&quot;SELECT * FROM product ORDER BY id DESC&quot;); ...

Не получается отправить запрос к php-файлу через ajax, чтобы не перезагружалась страница.
Добрый вечер! Не получается отправить запрос к php-файлу через ajax, чтобы не перезагружалась страница.У меня сообщение &quot;Email...

Как отправить и получить ответ от php через ajax?
Здравствуйте. Не совсем было понятно, где создавать тему (php или js). Если ошибся, приношу свои извинения. Есть вот такая форма:...

Как отправить форму, если в ней имеется еще одна форма, через ajax?
Здравствуйте, знатоки. Имеется главная простая форма для отправки с вложенной формой для загрузки файлов. Как отправить главную форму без...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru