发送JavaScript变量到PHP
即时尝试在这里做的是发送一个JavaScript变量到PHP函数。我正在开发的是一个jQuery Mobile应用程序,您可以在达到特定的经度/纬度时进行检查。但是我在向PHP函数发送经度/纬度时遇到了问题。我发送它到一个PHP函数,因为我要做一个比较,我已经存储在我的数据库中的经度/纬度。发送JavaScript变量到PHP
这是我的代码。
function testResults() {
if(navigator.geolocation) {
//Get the current position
navigator.geolocation.getCurrentPosition(function(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.write("lat", latitude);
document.write('<br /><br />');
document.write("long", longitude);
});
} else {
alert("Sorry... your browser does not support the HTML5 GeoLocation API");
}
//////////// Here I tried with jQuery/Ajax. I know that it's wrong.
//////////// Im putting it here so that it maybe clarifies what Im
//////////// trying to do.
$.post("checkLocation.php", {
lat : latitude,
longi : longitude
}, function(data) {
alert("Data Loaded: " + data);
});
////////////////////////////////////////////////////////////////////
}
testResults();
我该如何解决这个问题?我用JSON尝试过,但我没有得到它的工作。任何帮助将不胜感激。
尝试使用AJAX
http://api.jquery.com/jQuery.ajax/
你的处理程序应该是这样的:
$.ajax({
type: "POST",
url: "checklocation.php",
data: "lat="+latitude+"&longi="+longitude
}).done(function(msg) {
alert("Data Saved: " + msg);
});
navigator.geolocation.getCurrentPosition(function(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.write("lat", latitude);
document.write('<br /><br />');
document.write("long", longitude);
});
你有当地瓦尔这里经度和纬度。如果你想使用他们这个功能之外,您可以使用全局变量:
var latitude;
var longitude;
//...
navigator.geolocation.getCurrentPosition(function(position) {
latitude = position.coords.latitude;
vlongitude = position.coords.longitude;
document.write("lat", latitude);
document.write('<br /><br />');
document.write("long", longitude);
});
//usage(transfer) of vars
由于某种原因,这并不奏效。奇怪:S – Oscar
尝试使用回调AJAX请求(概念验证,如果一切正常,没有舒尔):
function testResults()
{
if (navigator.geolocation)
{
//Get the current position
navigator.geolocation.getCurrentPosition(function (position)
{
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
// do callback
$.ajax(
{
type: "POST",
url: "checklocation.php",
data: "lat=" + latitude + "&lon=" + longitude
}).done(function (msg)
{
alert("Data Saved: " + msg);
});
});
}
else
{
alert("Sorry... your browser does not support the HTML5 GeoLocation API");
}
}
testResults();
干杯。弗兰克
参数(msg)有什么用途? – Oscar
我已经看到jqXHR.done()在1.8中已被弃用。改为使用'success:function(){}'和'error:(){}'。 http://api.jquery.com/jQuery.ajax/ –
显示你的PHP代码 – Distdev
请发表您的应用程序的PHP端(使用参数的检索部分)> 并作出简洁(wellformed)JSON: {“LAT”:纬度,“LNG”:经度} –
@frank_neff:这是一个对象字面值,而不是JSON。没有必要在那里报价。 AJAX库将对象序列化为格式良好的JSON,完全独立于源代码是否带引号。 – RoToRa