0

XMLから解析したデータベースに保存した情報にアクセスしようとしています。phonegap(cordova 2.2.0)を使用しています。ナビゲーションバーをクリックしてqueryDB()を呼び出し、関数を呼び出して、XMLから解析された情報をdivに入力します。私の問題は、情報が表示されていないことです。

誰もが理由を知っていますか?以下は私のコードです:

クリックすると

<a href="#acceptedOrders" onclick("queryDB();")> <img src="Images/acceptedOrders.gif" width="25%"> </a>

これは、XMLをデータベースに読み込むjavascript関数です。

var db = openDatabase('PhoneGap_db', '1.0', '', 2 * 1024 * 1024);
db.transaction(function (tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS orders (id unique, city, state, zip)');
});


db.transaction(function (tx) {
   tx.executeSql('INSERT INTO orders (id, city, state, zip) VALUES (orderId,city,state,zip)');
});

$.ajax({
    type: "GET",
    url: "testOrders.xml",
    dataType: "xml",
    success: function(xml) {
      $(xml).find('order').each(function(){
        orderId = $(this).find("orderId").text();
        city = $(this).find("city").text();
        state = $(this).find("state").text();
        zip = $(this).find("zip").text();
        db.transaction(function (tx) {
           tx.executeSql('INSERT INTO orders (id, city, state, zip) VALUES ('+ orderId +', '+ city + ', ' + state + ', ' + zip + ')');
        });
            });
        }
     }); 

これが私の読み取りスクリプトです(機能していません)

function queryDB(tx) {
  tx.executeSql('SELECT orderId FROM orders', [], querySuccess, errorCB);
}
function querySuccess(tx, results) {
  var len = results.rows.length;
  for (var i=0; i<len; i++){
      $('#acceptedOrdersContent').append('<li><a href="#CompleteOrderInfo">'+results.rows.item(i).orderId+'</a></li>').listview("refresh");
  }
};
function errorCB(err) {
  console.log("Error processing SQL: "+err.code);
}

これはXMLファイルの例です。

    <?xml version="1.0" encoding="UTF-8"?>
     <orders>
        <order>
         <orderId>123456789</orderId>
         <city>Cincinnati</city>
         <state>Ohio</state>
        <zip>45451</zip>
    </order>
 </orders> 

みんな、ありがとう!

4

1 に答える 1

1

まず第一に、あなたのhtmlは間違っています、あなたはこのようにonclick( "")の代わりにonclick =""を使うべきです:

<a href="#acceptedOrders" onclick="queryDB();">
  <img src="Images/acceptedOrders.gif" width="25%">
</a>

また、queryDB関数は、渡されていないパラメーターを予期しています。次のように更新する必要があります。

function queryDB() {
  db.transaction(function (tx) {
    tx.executeSql('SELECT orderId FROM orders', [], querySuccess, errorCB);
  });
}

これは、dbオブジェクトが作成されたのと同じコンテキストにある必要があることに注意してください

于 2012-12-07T20:21:35.980 に答える