2013-04-07 42 views
0

我目前有以下代碼來處理Web SQL行。目前它向每一行的服務器發送一個請求。我想將所有的行以某種方式合併到一個多維的JSON對象中,但我似乎無法找到任何有關如何實現這一點的文檔。合併JSON字符串以簡化AJAX

有沒有什麼辦法可以「追加」到一個對象,因爲我循環通過結果?

$("#sync-surveys").click(function(){ 
$.mobile.showPageLoadingMsg(); 
db.transaction(function(tx) { 
    tx.executeSql("SELECT * FROM surveys", [], function(tx, result) {   
    for (var i = 0, item = null; i < result.rows.length; i++) { 
     item = result.rows.item(i); 
     var json_str = JSON.stringify(item); 

     $.ajax({ 
      type: "post", url: "/survey/survey/process_survey", 
      data: json_str, 
      success: function (data) { 
       alert("saved successfully"); 
       $.mobile.hidePageLoadingMsg(); 
      }, 
      error: function (data) { 
       alert(data.responseText); 
       $.mobile.hidePageLoadingMsg(); 
       //console.log(data); 
      } 
     });//End ajax function 
    }//End results loop 


    }); 
});//End Transaction 

});//End Surveys Click 
+0

http://api.jquery.com/jQuery.extend/ – adeneo 2013-04-07 20:08:03

回答

0

不要「合併字符串」。相反,「建立圖」。

// build data-structure/object graph - alter as required 
// make sure to choose something easy to consume/extend. 
var items = []; 
for (var i = 0; i < result.rows.length; i++) { 
     var item = result.rows.item(i); 
     // maybe do something else here? if not, it might be possible 
     // to JSON.stringify result.rows directly and/or use Array.slice 
     // to avoid this loop entirely 
     items.push(item); 
} 
// send request - only build JSON from JS object graph once at end 
// JSON = text: modify graph before converting for transmission 
$.ajax({ 
    data: JSON.stringify(items), 
    .. 
}); 
+0

完美地工作,謝謝! – Adam 2013-04-08 13:54:14