我想通過AJAX返回一個PHP頁面,它總是在Chrome中加載。在Firefox中,它會加載大約5%的時間,其他時間加載時沒有任何JS/PHP錯誤。我只是在沒有CSS的情況下直接回應html。HTML沒有顯示在Firefox
這裏是我的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/
當它「什麼也沒有返回」時,你確定AJAX請求實際上是否正在發佈? – 2011-02-11 19:35:23
使用類似HTTPFox或Firebug來監視瀏覽器<->服務器通信。看看在這些暫停期間發生了什麼。沒有任何類型的診斷信息,就幾乎不可能弄清楚。 – 2011-02-11 19:50:10