簡體   English   中英

使用for循環構建json以發送到php(也許)

[英]Build json to send to php using a for loop (maybe)

我已經四處搜尋,但是我可以找到一種用jQuery構建json並使用for循環將其發送到php的方法。 我有一個html表,我想從每一行中獲取值(我不知道會有多少行/值),構造一個json字符串,即。 [{"row": 1, "supp_short_code" : blah blah....}, {"row": 2, ....} ....]但我不知道如何繼續添加到每個json數據串中時間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數據庫中,例如“ id 1 product blah blah Supplier blah total cost£x,id 2 product blah2 price blah2 Supplier等等總成本£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!'); });

您的服務器端代碼的$_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
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM