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 回答