0

ここでこれらの質問の多くを見てきましたが、私の問題を解決するものはないようです。クエリを介して入力している多次元 (ネストされた) 配列があります。最終的な配列を 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リクエストの直前に上記をログに記録すると、返さ[[],[],[],[],[],[],[],[],[],[],[]]れるので、何かが機能していることがわかります。オブジェクトのコンテンツ全体がサーバー側に表示されると思っただけです。

また、これは配列変数のスコープに役立つと思うので、すべてを無名関数でラップしました。

4

1 に答える 1

0


orderDetails['retailer'][i] = [];
これをこれに変更します
orderDetails['retailer'][i] = {};

また、itemパラメータを使用して呼び出したい関数でない場合は、次のiようにアクセスします。results.rows.item[i].ID

于 2013-03-06T10:53:43.983 に答える