5

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/

4

3 に答える 3

0

console.log() は慎重に使用してください

javascript コードで console.log() を使用すると、firebug が無効になっているか、インストールされていない場合に例外がスローされます。(95% の確率で?) Firebug が有効になっているかどうかをチェック
する小さなラッパー関数「dump(var)」dump.jsを作成したので、本番コードでも安全に使用できます。

PS: 私は気づいた:

 success: function(html2){
   $('#locationinfo').html(html2);
   console.log(html);
 }

以前に定義された変数ですか、htmlそれともhtml2.

于 2011-03-08T10:57:48.293 に答える
0

私は FireBug を開いて、リンクをクリックして私のアドレスを見つけました。「未定義」という大量のリンクが返されました。FireBug では、スクリプトがこれを返すことを示しています。

<?xml version="1.0" encoding="utf-8" ?>
  <geoData>
    <restaurants>
    </place>
    </restaurants>
    <accommodations>
    </accommodations>
    <things>
    </things>
  </geoData>

見栄えを良くするためにインデントしました。アプリケーションが XML で何も返していないようです。開いていないタグも閉じています!

于 2011-02-20T13:10:38.923 に答える