ここでこれらの質問の多くを見てきましたが、私の問題を解決するものはないようです。クエリを介して入力している多次元 (ネストされた) 配列があります。最終的な配列を AJAX jQuery 経由で送信したい:
(function() {
var orderDetails = [];
orderDetails['retailer'] = [];
orderDetails['order'] = [];
db.transaction(function(qry){
qry.executeSql("SELECT * FROM retailers WHERE pending = '1' ", [], function(tx, results){
len = results.rows.length; //if rows.length, means retailer is pending so add details to array. If no length, means retailer exists
for (var i=0; i<len; i++){
console.log('start '+i+' loop in retailers qry');
orderDetails['retailer'][i] = [];
orderDetails['retailer'][i]['localID'] = results.rows.item(i).ID;
orderDetails['retailer'][i]['retailerName'] = results.rows.item(i).retailerName;
orderDetails['retailer'][i]['address'] = results.rows.item(i).address;
orderDetails['retailer'][i]['postcode'] = results.rows.item(i).postcode;
console.log('finish '+i+' loop in retailers qry');
}
}, function(err){console.log(err)})
}
これは私が配列にデータを入力する方法であり、AJAX リクエストは次のとおりです。
function(){
console.log('start orders qry success callback');
//alert(orderDetails['retailer'][0]['localID']);
var st = JSON.stringify(orderDetails['retailer']);
console.log(st);
$.ajax({//send retailer to server, bring back the ID of the retailer as it is on the server so we can insert it into the order
type: "POST",
cache: false,
//async: false,
url: "https://www.......processOrder.php",
data: { orderType: 'saved', orderDetails: st},
dataType: "json",
success: function(result){
}
})
});
ajaxリクエストの直前に上記をログに記録すると、返さ[[],[],[],[],[],[],[],[],[],[],[]]
れるので、何かが機能していることがわかります。オブジェクトのコンテンツ全体がサーバー側に表示されると思っただけです。
また、これは配列変数のスコープに役立つと思うので、すべてを無名関数でラップしました。