Envie a geolocalização do usuário para o servidor a cada minuto

Estou tentando escrever um aplicativo que envia a localização geográfica do usuário para o database MYSQL a cada minuto ou mais. Este é o código que tenho agora, mas não está funcionando. Como eu preciso mudar isso para fazê-lo funcionar?

JS:

       setInterval ( "onPositionUpdate()", 10000 ); function onPositionUpdate(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; jQuery.ajax({ type: "POST", url: "myURL/location.php", data: 'x='+lat+ '&y='+lng , cache: false, }); } if(navigator.geolocation) navigator.geolocation.watchPosition(onPositionUpdate); else alert("navigator.geolocation is not available");    

e PHP:

 prepare($sql); $q->execute(array($x), ($y)); ?> 

E eu suponho que este não é o caminho certo para enviar múltiplas variables, não é? O console do Firebug me mostra

  missing } after property list [Break On This Error] data: 'x='+lon+'&y='+lat; 

Quando eu uso apenas um valor, POSTs essa variável para o servidor apenas uma vez e depois desse console dá:

 position is undefined [Break On This Error] var lat = position.coords.latitude; 

Você precisa fazer algo como:

 var currPosition; navigator.geolocation.getCurrentPosition(function(position) { updatePosition(position); setInterval(function(){ var lat = currPosition.coords.latitude; var lng = currPosition.coords.longitude; jQuery.ajax({ type: "POST", url: "myURL/location.php", data: 'x='+lat+'&y='+lng, cache: false }); }, 1000); }, errorCallback); var watchID = navigator.geolocation.watchPosition(function(position) { updatePosition(position); }); function updatePosition( position ){ currPosition = position; } function errorCallback(error) { var msg = "Can't get your location. Error = "; if (error.code == 1) msg += "PERMISSION_DENIED"; else if (error.code == 2) msg += "POSITION_UNAVAILABLE"; else if (error.code == 3) msg += "TIMEOUT"; msg += ", msg = "+error.message; alert(msg); }