我已经浏览了几个类似的线程 - 但无法确切地看到我出错的地方。 我在拉特& amp;使用AJAX& amp;创建的应用程序上的用户lng PHP。我知道AJAX& PHP的工作原理是将所有内容(甚至是虚拟的lat& lng值)保存到我的数据库表中。 我现在已经玩了几个小时的变量了,到目前为止我得到的最好的结果是在数据库中插入了'0'值。
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
getCurrentLocation();
}
function onError(message) {
navigator.notification.alert(message, "", "Error");
}
function getCurrentLocation() {
navigator.geolocation.getCurrentPosition(locationSuccess, onError);
}
function locationSuccess(position) {
lat = document.getElementById("latSpan");
lon = document.getElementById("latSpan");
latitude = position.coords.latitude;
longitude = position.coords.longitude;
}
//recording function
function getXMLObject() //XML OBJECT
{
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP") // For Old Microsoft Browsers
}
catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") // For Microsoft IE 6.0+
}
catch (e2) {
xmlHttp = false // No Browser accepts the XMLHTTP Object then false
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined')
{
xmlHttp = new XMLHttpRequest(); //For Mozilla, Opera Browsers
}
return xmlHttp; // Mandatory Statement returning the ajax object created
}
var xmlhttp = new getXMLObject(); //xmlhttp holds the ajax object
function ajaxFunction() {
var getdate = new Date(); //Used to prevent caching during ajax call
if(xmlhttp) {
xmlhttp.open("POST","http://www.lauracrane.co.uk/app/rec/location.php",true); //
xmlhttp.onreadystatechange = handleServerResponse;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send("latitude=" + latitude + "&longitude=" + longitude);
}
}
function handleServerResponse() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
document.getElementById("message").innerHTML=xmlhttp.responseText;
}
else {
alert("Error during AJAX call. Please try again");
}
}}'
我想知道是否有人能够理解为什么它没有传递lat&的价值。 lng到AJAX功能。
任何帮助将不胜感激。 :)
劳拉
答案 0 :(得分:0)
也许我们看不到所有的代码,但看起来像纬度和经度的功能范围是locationSuccess。因此,当您尝试在ajaxFunction中访问它们时,它们将获得默认值。
此外,您不需要完成getXMLObject的所有乐趣。在Android,iOS和BlackBerry等webkit浏览器上,您只需执行以下操作:
var xmlhttp = new XMLHttpRequest();
最后因为您可能正在运行file://协议,所以您必须查找状态代码0,在这种情况下类似于200.
function handleServerResponse() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200 || xmlhttp.status == 0) {
document.getElementById("message").innerHTML=xmlhttp.responseText;
}
}
// etc.
}
答案 1 :(得分:0)
为什么不直接使用jQuery ajax调用?您的代码已标记为IE6 ...因为这标记在phonegap中,我认为您可以使用更新的处理方法。
我建议使用jQuery ajax ..
function ajaxFunction() {
$.ajax({
url:'http://www.lauracrane.co.uk/app/rec/location.php',
type:'POST',
data:'lat='+lat+'&long='+long,
success:function(d){
console.log(d);
},
error(w,t,f){
console.log(w+' '+t+' '+f);
}
});
}