将请求发送到php页面,然后使用ajax返回结果

时间:2012-12-12 00:00:12

标签: php javascript ajax

我有一个脚本,我试图将一些位置信息发送到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"}]]

1 个答案:

答案 0 :(得分:1)

萨姆,我有几点建议。

首先,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从这里开始:)