我试图通过AJAX返回一个PHP页面,它总是在Chrome中加载。在Firefox中,它加载大约5%的时间,有时加载没有任何JS / PHP错误。我只是在没有CSS的情况下直接回复html。
这是我的Ajax:
if(geo_position_js.init()){
geo_position_js.getCurrentPosition(displayPosition,error_callback,{enableHighAccuracy:true,options:5000});
}
else{
alert("Functionality not available");
}
function error_callback(p)
{
alert('error='+p.message);
}
function displayPosition(loc) {
var mylat = loc.coords.latitude;
var mylong = loc.coords.longitude;
$.ajax({
type: "POST",
url: "distancetest.php",
data: "long="+mylong+"&lat="+mylat,
success: function(html2){
$('#locationinfo').html(html2);
console.log(html);
}
});
}
我的PHP基本上这样做了几次:
$query = "SELECT * FROM tbl_geo WHERE cat_id=1";
$result = mysql_query ($query) or die(mysql_error());
echo "<h2>Restaurants</h2>";
while ($row = mysql_fetch_array($result)){
if($row['lat'] != ''){
$distance = distance($_POST['lat'], $_POST['long'], $row['lat'], $row['lng'], "k");
if($distance < 2000){
$attractions[] = array('name' => $row['name'], 'address' => $row['address'], 'distance' => $distance);
}
}
}
$attractions = array_sort($attractions,'distance');
$attractions = array_values($attractions);
for ($i = 0; $i <= 10; $i++) {
if(isset($attractions[$i]['distance'])){
echo 'You are '.$attractions[$i]['distance'].'km away from '.$attractions[$i]['name'].' at '.$attractions[$i]['address'].'<br/>';
}
}
适用于某些浏览器,但在其他浏览器中不显示任何内容。有什么想法吗?
更新:原来这是Firefox中的地理位置问题。它无法获得该位置但未返回error_callback函数。现场示例如下:http://adamzwakk.com/geolocate/
答案 0 :(得分:0)
我打开了FireBug,点击了链接查找我的地址。它返回了一大堆链接,说“未定义”。在FireBug中,它显示您的脚本正在返回:
<?xml version="1.0" encoding="utf-8" ?>
<geoData>
<restaurants>
</place>
</restaurants>
<accommodations>
</accommodations>
<things>
</things>
</geoData>
我缩进它以使它看起来更好。您的应用程序似乎在XML中没有返回任何内容。您还要关闭一个未打开的标签!
答案 1 :(得分:0)
您确定您的浏览器支持您正在做的事情吗?
试试这个: http://html5demos.com/geo
您还可以下载wireshark并检查您发送的信息并从服务器返回。
将空白的php页面(只是回显随机字符串)放在要生成php的同一目录中并查看它是否正常工作也是一种好习惯。在基于Windows的服务器上,PHP可以设置为在特定目录中工作是一个常见问题,并且由于错误安装可能会在其他目录中失败。 每个浏览器都以不同的方式处理错误和警告消息,因此如果它在chrome中有效,则并不意味着它可以在其他所有内容上运行你试过Safari和Opera吗?
答案 2 :(得分:0)
谨慎使用console.log()
在禁用或未安装firebug时,在javascript代码中使用console.log()会引发异常。 (95%的时间?)
我写了一个小的包装函数“dump(var)”dump.js来检查firebug是否已启用,因此在生产代码中使用也是安全的。
PS: 我注意到了:
success: function(html2){
$('#locationinfo').html(html2);
console.log(html);
}
之前定义的html
变量或您的意思是html2
。