2011-07-06 12 views
2

これは私の初めてのAJAXです.JS変数をPHPスクリプトに送信しようとしています。私はXMLHttpRequestを持っていますが、完全ではないようです - 何が欠けていますか?XMLHttpRequestからPHPスクリプト - ここには何が欠けていますか?

if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(successFunction, errorFunction); 
    } 
    else { 
     document.write("Geolocation is required for this page."); 
    } 

    function successFunction(position) { 
     var lat = position.coords.latitude; 
     var lng = position.coords.longitude; 
    // document.write("<a href='http://api.geonames.org/findNearbyPlaceNameJSON?lat="+lat+"&lng="+lng+"&username=sebastiano'>my town</a>"); 

     var xmlhttp; 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else { 
      // code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     xmlhttp.open("GET","location.php?lat=position.coords.latitude",true); 
     xmlhttp.send(); 

     // SOMETHING MISSING HERE? 

    } 

    function errorFunction(position) { 
     document.write("Error"); 
    } 
+0

これがAjaxを初めて扱う場合は、自分自身で行うのではなく、http://jquery.com/ などの共通の単純なライブラリを使用することをお勧めします。アプリケーションをもっと多くのrにすることができますeacher。 – fatnjazzy

+0

返信いただきありがとうございます。これを簡単にするためのチュートリアルや検索語句はありますか? – Sebastian

+0

http://net.tutsplus.com/tutorials/javascript-ajax/5-ways-to-make-ajax-calls-with-jquery/は良い概要です。そうでなければjquery ajaxのserachです。 – Drazisil

答えて

3

変数の内容をopenコマンドに渡していないようです。あなたの緯度は、内容 "position.coords.latitude"

を持つ文字列が含まれています。この例では

xmlhttp.open("GET","location.php?lat=position.coords.latitude",true); 

代わり

xmlhttp.open("GET","location.php?lat="+position.coords.latitude,true); 

いっそは、あなたが作成した変数を使用してみてください関数の先頭にlongとlatの両方を渡します。

xmlhttp.open("GET","location.php?lat=" + lat + "&long=" + lng,true); 
+0

ありがとう、私はそれに気付かなかった。私の外部PHPがこれらの値を受け取っているかどうかはどうすればわかりますか? – Sebastian

+0

最も速い方法は、必ずしも最良ではないが、2つの変数の内容を電子メールで送るlocation.phpページに関数を設定することです。 – JConstantine

+0

インデックスファイルのウィンドウに印刷する方法はありますか? – Sebastian

2

あなたはこれを試してみてくださいjQueryの

1

を見て、またxmlhttp.open("GET","location.php?lat=" + position.coords.latitude,true);

を試してみてください...値として "position.coords.latitude" と

それを送信している:

 var xmlhttp; 

     if (window.XMLHttpRequest) { 
       // code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp=new XMLHttpRequest(); 
     } 
     else { 
       // code for IE6, IE5 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     xmlhttp.onreadystatechange=function(){ 
       if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
         console.log(xmlhttp.responseText); 
       } 
     } 

     xmlhttp.open("GET","location.php?lat=" + position.coords.latitude,true); 
     xmlhttp.send(); 
+0

が得られます。ここで結果をlocation.phpにエコーする必要があります。その後、このコードはコンソールにログを記録します。文字列として使用できます(必要に応じて警告するなど)。 – fitne

関連する問題