jquery - 让 gps 脚本运行一次,不需要停止和开始按钮
Posted
技术标签:
【中文标题】jquery - 让 gps 脚本运行一次,不需要停止和开始按钮【英文标题】:jquery - getting a gps script to run once, not needed to stop and start with buttons 【发布时间】:2013-04-20 12:14:09 【问题描述】:我是新来的,所以请客气。 我希望这个 gps 跟踪器在加载页面“gps.php”时自动将一个条目写入我的 mysql 数据库 如果您按下开始按钮,然后按下停止按钮,我就可以正常工作。 我想完全摆脱这些按钮,只需运行一次这个 jquery 脚本,然后向 mysql 表输入一次。
所有代码都在这里http://cdpn.io/qkEvA
请您帮忙,我一直在为 WEEKS 苦苦挣扎(我不是作为职业的程序员;)
$(document).ready(function()
// how often should we send location data? in seconds
var sendInterval = 0.9;
var runnerId;
while (!runnerId)
runnerId = prompt("Enter your album name:", "");
var intervalId;
var watchId;
var index = 0;
var formData = ;
$("#status p").text("Not tracking");
$('#start').on("click", startTrack);
$('#stop').on("click", stopTrack);
function startTrack()
if(navigator.geolocation)
watchId = navigator.geolocation.watchPosition(geo_success, errorHandler,
enableHighAccuracy:true, maximumAge:30000, timeout:27000);
else
alert("Sorry, device does not support geolocation! Update your browser.");
function stopTrack()
clearInterval(intervalId);
navigator.geolocation.clearWatch(watchId);
index = 0;
$("#status p").text("Not tracking").removeClass("active").addClass("stopped");
$("#start").removeAttr("disabled");
$("#stop").attr("disabled", "disabled");
function geo_success(position)
$("#status p").text("Tracking active").removeClass("stopped").addClass("active");
$("#start").attr("disabled", "disabled");
$("#stop").removeAttr("disabled");
lat = position.coords.latitude;
lon = position.coords.longitude;
formData.lat=lat;
formData.lon=lon;
if(index === 0)
intervalId = setInterval(postData, sendInterval*1000);
index++;
function addTime()
// insert time in formData-object
var d = new Date();
var d_utc = ISODateString(d);
formData.time=d_utc;
// date to ISO 8601,
// developer.mozilla.org/en/javascript/Reference/Global_Objects/Date#Example.3a_ISO_8601_formatted_dates
function ISODateString(d)
function pad(n)return n<10 ? '0'+n : n
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'D'
+ pad(d.getUTCHours()+2)+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'T'
function postData()
addTime();
$.ajax(
type: 'POST',
url: 'save.php?file='+runnerId,
data: formData,
async: false,
);
function errorHandler(err)
if(err.code == 1)
alert("Error: Access was denied");
else if(err.code == 2)
alert("Error: Position is unavailable");
);
【问题讨论】:
【参考方案1】:如果您想在页面加载后立即开始跟踪并在页面关闭之前停止堆叠,您应该在代码中替换为:
$('#start').on("click", startTrack);
$('#stop').on("click", stopTrack);
到这里:
startTrack();
$( window ).on( 'unload', stopTrack );
并将这段代码移到startTrack
函数定义下。
【讨论】:
以上是关于jquery - 让 gps 脚本运行一次,不需要停止和开始按钮的主要内容,如果未能解决你的问题,请参考以下文章
GPS 追踪器与 jQuery 移动、PhoneGap 和谷歌地图
python如何成服务在后台一直运行,或者让其隔几分钟自动运行一次