我有一个脚本,我试图将一些位置信息发送到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"}]]
答案 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从这里开始:)