2012-01-25 22 views
1

私はいくつかの同様のスレッドを調べましたが、どこが間違っているのか正確にはわかりません。 AJAX & PHPを使用して、私が作成しているアプリに&人のユーザーを登録しています。私はAJAX & PHPが、すべてのもの(ダミーラフ& lngの値さえ)をデータベーステーブルに保存するので、PHPが動作することを知っています。 私は数時間、変数を使って遊んできました。これまでのところ私が持っていた最良の結果は、データベースに「0」という値が挿入されていることです。AJAXを使用してジオロケーションデータをPHPに投稿する

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"); 
} 
}}' 

それはAJAX機能にLAT & LNGの値を渡していない理由を誰かが見ることができる場合、私は思っていました。

ご協力いただければ幸いです。 :)

ラウラ

+0

あなたはPHP側で受信されたデータを確認しましたか?それは大丈夫だと思うので。緯度と経度を保存するためにINTを使用している場合は、データベース側に問題がある可能性があります。 – cleanunicorn

+0

こんにちは、それはVARCHARです。 :) – LCrane86

答えて

0

多分、我々はすべてのコードを見ることができないが、それは緯度と経度のように見える機能はlocationSuccessにスコープされています。そのため、ajaxFunctionでアクセスしようとすると、デフォルト値が取得されます。

また、そのすべてのgetXMLObject funを行う必要はありません。あなたはおそらく、ファイルのこのオフに実行されているので、

var xmlhttp = new XMLHttpRequest(); 

そして最後に:アンドロイド、iOSとBlackBerryの中のようなWebKitのブラウザであなただけ行う必要がある//プロトコルを使用するには、0のステータスコードを探す必要がありますこの場合の200に類似している。

function handleServerResponse() { 
    if (xmlhttp.readyState == 4) { 
     if(xmlhttp.status == 200 || xmlhttp.status == 0) { 
      document.getElementById("message").innerHTML=xmlhttp.responseText; 
     } 
    } 
    // etc. 
} 
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); 
    } 
}); 
} 
関連する問題