ben*_*e89 0 php jquery json for-loop
我已经google了,但我可以找到一种方法来使用jQuery构建json并使用for循环将其发送到php.我有一个html表,我想从每一行中获取值(我不知道将有多少行/值)构造一个json字符串,即.[{"row": 1, "supp_short_code" : blah blah....}, {"row": 2, ....} ....]
但我不知道如果jQuery发现更多的值,如果有意义的话,如何继续添加到json数据串?
编辑:
所以,如果我有这个
$('#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");
}
});
});
Run Code Online (Sandbox Code Playgroud)
那么(大致)我需要在这段代码中改变什么?

好的,正如您在屏幕截图中看到的那样,当用户点击顶部表格中的一行时,我正在使用jquery动态添加底部表格,计算总计并且他们可以指定他们想要使用哪个供应商.然后我使用jquery将这些值集中到顶部的jquery代码的$('submit')位.然后我想将这些值发送到一个php页面,它将以某种方式解析收到的数据,将其插入到mysql数据库中,就像"id 1 product blah price blah supplier blah total cost£x,id 2 product blah2 price blah2 supplier blah总成本£x"所以一些领域,即总成本和供应商将是相同的,但如果有意义,php可能会为同一订单接收3种不同的产品?谢谢!
您不需要构建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!'); });
Run Code Online (Sandbox Code Playgroud)
您的服务器端代码的$_POST数组将包含:
array( 'field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3');
Run Code Online (Sandbox Code Playgroud)
对于您的示例,我会重新考虑将数据作为字符串发送,而是将数据作为格式良好的键/值对发送.您的服务器端代码可以更轻松地决定如何处理它,如果服务器端代码需要以不同方式构建字符串,则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()
}
//...
});
Run Code Online (Sandbox Code Playgroud)
您可以通过将字段名称放入数组中来减少键入的数量,并附加要包含在数据数组中的任何字段的类名.然后遍历每个表行并提取值:
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);
});
Run Code Online (Sandbox Code Playgroud)