Вам не нужно создавать 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);
});