Построить json для отправки на php с помощью цикла for (возможно)

Я googled вокруг, но я могу найти способ построить json с jQuery и отправить его на php, используя цикл for. У меня есть html-таблица, и я хочу принимать значения из каждой строки (я не знаю, сколько строк / значений будет), построим строку json, т. Е. [{"row": 1, "supp_short_code" : blah blah....}, {"row": 2, ....} ....] но я не знаю, как продолжать добавлять в json datastring каждый время jQuery находит больше значений, если это имеет смысл?

РЕДАКТИРОВАТЬ:

Так что если у меня есть это

 $('#submit').live('click',function(){ var supp_short_code=$('.supp_short_code').text(); var project_ref=$('.project_ref').text(); var om_part_no=$('.om_part_no').text(); var description=$('.description').text(); var cost_of_items=$('.cost_of_items').text(); var cost_total=$('.cost_total').text(); var dataString = 'string=//' + supp_short_code + '//' + project_ref + '//' + om_part_no + '//' + description + '//' + cost_of_items + '//' + cost_total $.ajax ({ type: "POST", url: "order.php", data: dataString, cache: false, success: function() { alert("Order Submitted"); } }); }); 

Итак, что (грубо) мне нужно будет изменить в этом коде? Скриншот

Итак, как вы можете видеть на скриншоте, я использую jquery для динамического добавления нижней таблицы, когда пользователь щелкает строку из верхней таблицы, вычисляет итоговые суммы, и они могут указать, какой поставщик они хотят использовать. Затем я использую jquery для захвата этих значений в бите $ jquery кода $ ('submit') вверху. Затем я хочу отправить эти значения на страницу php, которая каким-то образом проанализирует полученные данные при вставке в mysql db, как что-то вроде «id 1 product blah price blah поставщик blah общая стоимость £ x, id 2 product blah2 price blah2 поставщик blah total cost £ x ", поэтому некоторые поля, то есть общая стоимость и поставщик будут одинаковыми, но php может получать 3 разных продукта для одного и того же порядка, если это имеет смысл? Благодаря!

Related of "Построить json для отправки на php с помощью цикла for (возможно)"

Вам не нужно создавать json, просто создайте массив данных и отправьте его с помощью .post , .get или .ajax . jQuery позаботится о кодировании массива для вас:

 var data = {}; for (var i = 0; i < 3; ++i) { data['field' + i] = 'value' + i; } $.post ('http://mysite.com/page', data, function() { alert('succes!'); }); 

Ваш массив $_POST стороне сервера будет содержать:

 array( 'field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3'); 

Для вашего примера я бы пересмотрел отправку данных в виде строки и вместо этого отправил данные как хорошо сформированные пары ключ / значение. Ваш код на стороне сервера может более легко решить, что с ним делать, и вашему JS не потребуется переписывать, если серверный код нуждается в построении строки по-разному.

 $.ajax ({ type: "POST", url: "order.php", data: { supp_short_code: $('.supp_short_code').text(), project_ref: $('.project_ref').text(), om_part_no: $('.om_part_no').text(), description: $('.description').text(), cost_of_items: $('.cost_of_items').text(), cost_total: $('.cost_total').text() } //... }); 

Обновить

Вы можете уменьшить количество ввода, выбросив свои имена полей в массив и добавив имя класса для любых полей, которые вы хотите включить в массив данных. Затем сверните по каждой из строк таблицы и извлеките значения:

 var fields = [ 'supp_short_code', 'project_ref', 'om_part_no', 'description', 'cost_of_items', 'cost_total']; var data = []; // loop over each row $('#my-table tr').each(function (i, tr) { // extract the fields from this row var row = {}; for (var f = 0; f < fields.length; ++f) { row[fields[f]] = $(tr).find('.' + fields[f]).val(); } // append row data to data array data.push(row); }); 

Вот быстрый способ захватить данные из вашей таблицы и форматировать их как массив:

 var data_to_send = $('#yourtable').find('tr').map( function(idx){ return [ 'row': idx+1, 'supp_short_code' : $(this).find('td').eq(2).text(), 'something_else' : $(this).find('td').eq(3).text() // etc ]; }).get(); 

Теперь у вас есть data_to_send , массив, отформатированный аналогично примеру вашего вопроса. Как указывает @meagar, вы можете просто отправить его на сервер с помощью .ajax() и др. И разрешить jQuery автоматически обрабатывать кодировку. Что-то вроде этого:

 $.ajax ({ type: 'post', url: 'your_script', data: data_to_send });