2012-05-06 16 views
0

連絡先を取得してデータベースに保存するphonegapアプリケーションを作成しています。私は、後でデータベーステーブルに格納される人の電話番号と表示名を保存する、2つの空のグローバル配列を先頭に作成しました。連絡先が配列に正常に保存されていることを確認するために、私はtest_data()関数を作成しました。Phonegapを使用したJavascriptグローバル配列が機能しない

私の問題は、test_data()コードが機能しておらず、ログに値が表示されていないことです。今私はtest_data()の機能からonSuccess()にそのコードを移動する場合、それは正常に動作します。ここにコードがあります。 JSでグローバル配列を宣言するのは適切な方法ではありません。

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Contact Example</title> 

    <script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
    var gcont = []; var gphon = []; 

    // Wait for Cordova to load 
    // 
    document.addEventListener("deviceready", onDeviceReady, false); 

    // Cordova is ready 
    // 
    function onDeviceReady() { 

    // find all contacts with 'Bob' in any name field 
    var options = new ContactFindOptions(); 
    options.filter=""; 
    options.multiple=true; 
    var fields = ["displayName", "phoneNumbers"]; 
    navigator.contacts.find(fields, onSuccess, onError, options); 
    test_data(); 
    } 

    // onSuccess: Get a snapshot of the current contacts 
    // 
    function onSuccess(contacts) { 


    for(var index=0;index<contacts.length;index++){ 
    gcont[index] = contacts[index].displayName; 
    gphon[index] = contacts[index].phoneNumbers[0].value; 

    }   


    } 

    function test_data(){ 
    for (z=0;z<gcont.length;z++){ 
    console.log(gcont[z]);} 
} 




    // onError: Failed to get the contacts 
    // 
    function onError(contactError) { 
     alert('Error With Contacts!'); 
    } 


    </script> 
    </head> 
    <body> 
    <h1>Example</h1> 
    <p>Find Contacts</p> 
    </body> 
</html> 

答えて

2

contacts.findするするonSuccessコールバックが非同期であり、TEST_DATA()が実行されたときにアレイを移入されていないためTEST_DATA()の呼び出しがonDeviceReady()に動作しません。

+0

私のJSの知識がかなり基本的であるか、上記のコードで何が間違っているのか教えてください。どうすれば修正できますか? –

+0

あなたはcontacts.findの結果で何かしたいのであれば、あなた自身がこの質問に答えました。それはonSuccess関数内にある必要があります。 – gmh04

+0

おそらく、Async JavaScript http://leanpub.com/asyncjsのeBook –

関連する問題