PhoneGap/Cordova 将 GeoLocation 从 localStorage vars 推送到 MySQL
Posted
技术标签:
【中文标题】PhoneGap/Cordova 将 GeoLocation 从 localStorage vars 推送到 MySQL【英文标题】:PhoneGap/Cordova Push GeoLocation from localStorage vars to MySQL 【发布时间】:2014-06-14 17:28:11 【问题描述】:我有一个 Cordova/Phonegap 应用程序,它将地理位置(经度/纬度)推送到 localStorage。我在将这些变量推送到 mysql 数据库时遇到问题。我只是想在连接到 mySQL 时发送数据。我的代码如下:
index.html(地理位置设置)
//find location info//
function geolocation()
var options = enableHighAccuracy = true;
watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
//this functions runs if geolocation is returned//
function onSuccess(position)
var lat = position.coords.latitude;
var lng = position.coords.longitude;
//save to local storage
localStorage.setItem("latitude", lat);
localStorage.setItem("longitude", lng);
//tell user their lng and lat
//alert("lat: " + lat + "long: " + lng);
//if cant get location give error//
function onError(error)
alert("message: " + error.message);
localStorage.setItem("message", error.message);
geolocation();
在我将数据发送到 localStorage 时工作正常。现在我需要做的就是onNetworkAvailable,将数据推送到mySQL。
我的 ondevice.js(在我脑海中引用)
// Wait for PhoneGap to load
//
function onDeviceReady()
if (parseFloat(window.device.version) === 7.0)
document.body.style.marginTop = "20px";
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is loaded and it is now safe to make calls PhoneGap methods
var isNetworkAvailable=true;
function onDeviceReady()
checkConnection();
document.addEventListener("offline", setOffline, false);
document.addEventListener("online", setOnline, false);
function checkConnection()
var networkState = navigator.network.connection.type;
var states = ;
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
alert('Connection type: ' + states[networkState]);
function networkAvailable()
return isNetworkAvailable;
//var userID = $(this).attr('id');
var getlat = window.localStorage.getItem("latitude", lat);
var getlng = window.localStorage.getItem("longitude", lng);
//alert($(this).attr('id'));
$.ajax(
type: "POST",
url: 'myurl/dbUserLocation.php',
data: getlat : getlat, getlng : getlng,
success: function(data)
alert("Data sent!");
,
complete:function remove()
localStorage.removeItem("latitude");
localStorage.removeItem("longitude");
,
error: function()
alert('Code 303A');
);
function setOffline()
isNetworkAvailable=false;
function setOnline()
isNetworkAvailable=true;
还有我的 dbUserLocation.php 发送到 mySQL:
ini_set('display_errors',1);
error_reporting(E_ALL);
header('Access-Control-Allow-Origin: *');
$hostdb = 'myhostip';
$namedb = 'mydbname';
$userdb = 'root';
$passdb = 'mydbpass';
$conn = new PDO("mysql:host=dbip; dbname=$namedb", $userdb, $passdb);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
if(isset($_POST['longitude']) && ($_POST['latitude']))
$longitude = $_POST['longitude'];
$latitude = $_POST['latitude'];
$stmt = "INSERT INTO row_location (latitude,longitude)
VALUES (:longitude,:latitude)";
$q = $conn->prepare($stmt);
$results = $q->execute(array(
":longitude"=>$longitude,
":latitude"=>$latitude
));
exit();
如上所述,我的经度和纬度可以毫无问题地存储到数据库中。但是让它发送到我的 mySQL 数据库是我做不到的。我使用这种方法是因为我正在为移动设备开发(确切地说是 Cordova/Phonegap)。
对此有任何帮助将是一个加分项。
【问题讨论】:
【参考方案1】:如果有人在发送 localStorage 坐标时遇到问题...我能够让我的数据发送...我设置我的 ajax 来发布我的新变量,该变量引用了 localStorage 中的 Cordova/Phonegaps getItem。我的代码如下......完美!希望这可以帮助任何尝试实现相同目标的人。
var getlat = window.localStorage.getItem("latitude");
var getlng = window.localStorage.getItem("longitude");
$.ajax(
type: "POST",
url: 'http:myurl/dbUserLocation.php',
data: latitude : getlat, longitude : getlng ,
success: function(data)
alert("Location Data Sent!");
,
complete:function remove()
localStorage.removeItem("latitude");
localStorage.removeItem("longitude");
,
error: function()
alert('Code 303A');
);
【讨论】:
以上是关于PhoneGap/Cordova 将 GeoLocation 从 localStorage vars 推送到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章
将横向限制在特定页面、jquery mobile、iOS、phonegap/cordova
将 twitter 数字与 cordova/phonegap 应用程序集成?
将使用相机拍摄的照片捕获并存储到本地数据库/PhoneGap/Cordova/iOS
PhoneGap / Cordova 将 appdelegate 变量传递给 JS