2012-06-29 132 views
0

我已经花了最后3天,直到我得到gps使用phonegap开发应用程序的Android工作。应用程序在发送位置phonegap时关闭android

我正在使用示例来了解它是如何工作的,但是当我尝试将位置发送到数据库时遇到了一些问题。

这是我的代码:

<!DOCTYPE html> 
<html> 
<head> 
<title>Device Properties Example</title> 

<script type="text/javascript" charset="utf-8" src="cordova-1.8.1.js"></script> 
<script type="text/javascript" charset="utf-8"> 

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

// Cordova is ready 
// 
function onDeviceReady() { 
    navigator.geolocation.getCurrentPosition(onSuccess, onError, { 
     enableHighAccuracy : true, 
     maximumAge : Infinity, 
     timeout : 15000 
    }); 
} 

// onSuccess Geolocation 
// 
function onSuccess(position) { 
    var element = document.getElementById('geolocation'); 



    var id = 1; 
    pagina = window.open("http://mywebpage:80/open/posicionCamion.php?lat=" + position.coords.latitude + "&lon=" + position.coords.longitude + "&id=" + id); 
    pagina.close();     

    element.innerHTML = 'Latitude: '   + position.coords.latitude    + '<br />' + 
         'Longitude: '   + position.coords.longitude    + '<br />' + 
         'Altitude: '   + position.coords.altitude    + '<br />' + 
         'Accuracy: '   + position.coords.accuracy    + '<br />' + 
         'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '<br />' + 
         'Heading: '   + position.coords.heading    + '<br />' + 
         'Speed: '    + position.coords.speed     + '<br />' + 
         'Timestamp: '   +         position.timestamp   + '<br />'; 

} 

// onError Callback receives a PositionError object 
// 
function onError(error) { 
    alert('code: ' + error.code + '\n' + 
      'message: ' + error.message + '\n'); 
} 

</script> 
</head> 
<body> 
<p id="geolocation">Finding geolocation...</p> 
</body> 
</html> 

如果我删除pagina.window和pagina.close线,它工作正常。但是我想每15秒发送一个位置到一个php文件,这个php文件每次都会更新数据库。

使用这些行,应用程序关闭,但没有任何发送。有办法做我想做的事?

我使用webbrowser测试了php文件,它工作正常。

谢谢。

回答

1

window.open()打开浏览器窗口,该窗口在设备中无法正常工作。尝试用ajax请求替换window.open()调用。

<script type="text/javascript"> 
function callAjax(url){ 
    var req = new XMLHttpRequest(); 
    req.open('GET', url, false); 
    req.send(); 
    if(req.status == 200 || req.status == 0) { 
     alert(req.responseText); 
    } 
} 
</script> 
+0

谢谢。有没有一种方法使用ajax来做一两行?我找到的所有示例都必须创建XMLHttpRequest对象,并不像我使用的那样简单。 – user1298272

+0

我通常使用jquery,因为它很容易,我已经把这个功能放在应该工作的答案中。 – dhaval

+0

它的作品!谢谢!!现在它不关闭,我可以继续使用我的应用程序。 – user1298272

相关问题