我正在创建一个 phonegap 应用程序来获取联系人并将它们保存在数据库中。我在顶部创建了两个空的全局数组,它们将保存电话号码和一个人的显示姓名,稍后将存储在数据库表中。为了检查联系人是否成功保存在数组中,我创建了一个test_data()
函数。
现在我的问题是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>