1

ロケーション情報を php ページに送信し、mysql 検索クエリを実行して、別のページに移動せずに結果を取得しようとするスクリプトがあります。

私のphpは正常に動作し、phpページにリダイレクトするページが機能していましたが、以下のコードを使用しようとすると、結果が返されません。

Javascript コード

   function phpRedirect(loc) { 

  // var radius = get('r');     // Retrieve GET values for search radius      and                           
  // var numResults = get('n'); // number of results

  var radius = 10;     // Retrieve GET values for search radius and                           
   var numResults = 5; // number of results

  var latitude = loc.coords.latitude;   // Get long, lat and accuracy from
  var longitude = loc.coords.longitude; // location object
  var accuracy = loc.coords.accuracy;

var xmlHttp = new XMLHttpRequest();  //not the cross browser way of doing it
   xmlHttp.open("GET", "find.php?lat=" + latitude + "&long=" + 
                   longitude + "&acc=" + accuracy + "&r=" + radius 
                   + "&n=" + numResults, true); 
    xmlHttp.send(null);                    

    } 

      $(function () 
     {
   $.ajax({                                      
    url: 'find.php',                  //the script to call to get data          
    type: "post",
    data: { getData: true },
    dataType: 'json',                //data format      
    success: function(data)          //on recieve of reply
    {
        var name = data[0];              

        $('#output').html("<b>username: </b>"+username);

       } 
    });
  }); 


 function error(loc) { 
 // This is called if the location can't be found.
  document.write("Error finding GPS location");
  } 

 // Use navigator to get current user location. If found, calls 'phpRedirect()',
// If not available calls 'error()'. Includes timeout and ensures highest acc.
navigator.geolocation.getCurrentPosition(phpRedirect, error, {maximumAge:60000,    timeout:5000, enableHighAccuracy:true}); 

<div id="output">this element will be accessed by jquery and this text replaced </div>

以下は、私のphpクエリからの出力です。

   $result=mysql_query($query) or die (mysql_error());

  while($row=mysql_fetch_assoc($result)) $data[]=$row; // Turn result to array

  $acc_package = array('location_accuracy'=>"$accuracy"); // Include result array
  $output[] = $acc_package;                          // and accuracy value inside
  $output[] = $data;                                 // an output array.
  print(json_encode($output)); // Convert output array to json format and print

次の結果が得られます

 [{"location_accuracy":"122000"},[{"username":"bobbyj","distance":"0.484367160806139"}]]
4

1 に答える 1

2

サム、あなたにいくつか提案があります。

まず、jQuery ライブラリは素晴らしく、AJAX モジュールは驚くほど機能します :) あなたがそれを使っていることは素晴らしいことです! その古い XMLHTTP ジャンクをそれに混ぜる必要はありません (基本的に同じことを行います)。そのため、それを取り除き、jQuery ajax に置き換えます。

本当に基本的なことから始めましょう。

$.ajax({                                      
    url: 'find.php',       
    type: "POST",
    data: { lat: lattitude } 
}).done(function( msg ) {
    alert(msg);
});

他の変数をデータに入れます: 同様に。

PHP ページで、単純な var_dump($_POST); を試してください。何が起こっているかがわかります。AJAX は、PHP ページのコンテンツでアラートを作成する必要があります。

これから Mysql を使って作業を進めてください :)

于 2012-12-12T00:53:43.253 に答える