-1

サーバー上のxmlファイルからデータを取得するajax関数があります。特定のエリア内にいる場合にのみ表示されるファイルを取得しようとしています(したがって、経度と緯度を使用しています)。そのためには、URL (ajax 関数内) に経度と緯度を追加して、ファイルにアクセスできるようにする必要があります。経度と緯度を保持する ajax 関数の外部で 2 つのグローバル変数を宣言しました。しかし、ajax関数内で変数を呼び出す方法がわかりません(URLに追加してファイルを取得できるようにするため)。誰か教えてください。いくつか例を教えてください。

ありがとうございました

コードは次のとおりです:(正確なURLを入れていません)

    var geolocation = {};
    geolocation.latitude = 0;
    geolocation.longitude = 0;
    //Check if geolocation is available
    if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function (p) {
    geolocation.latitude = p.coords.latitude;
    geolocation.longitude = p.coords.longitude;
    alert(geolocation.latitude + " " + geolocation.longitude);
    }, function (error) {
    alert("Failed to get GPS location");
    });
    } else {
    alert("Failed to get GPS working");
    }
    $(document).ready(function () {
       $.ajax({
       type: "GET",
       url: "url",
       dataType: "xml",
       success: xmlParser
    });
    });
    function xmlParser(xml) {
       $('#wrap2').append("<ul></ul>");
       $(xml).find("photo").each(function () {
       var festname = $(this).find('name').text();
       var fest_url = $(this).find('url').text();
       var fest_filename = $(this).find('filename').text();
       $("<li></li>").html(festname + "" + fest_url + "" + fest_filename).appendTo("#wrap2 ul");
     });
    }
4

2 に答える 2

1

変数が真にグローバルである場合 (これは避けることを強くお勧めします)、どこからでもアクセスできます。それが「グローバル」という言葉の意味です。

など:

$.ajax({
    url:   "/path/to/the/file?foo=" + encodeURIComponent(fooGlobal) + "&bar=" & encodeURIComponent(barGlobal),
    // ...
});

...または類似。jQueryでエンコードして追加することもできます(これは操作だと思いますGET):

$.ajax({
    url:   "/path/to/the/file",
    data:  {
        foo:  fooGlobal,
        bar:  barGlobal
    },
    // ...
});
于 2013-02-27T11:20:39.047 に答える
0

3 つの方法: (悪意のある) グローバル変数を作成したので、関数内からそれらを参照することができます (JS はスコープ スキャンを行います)。

var globalVar = 1234;
function someFunction()
{
    console.log(globalVar);
}

これは問題ありません。関数内で宣言され、グローバル変数と同じ名前の変数がある場合はwindow、名前空間として を指定することもできます。

var someVar = 'global';
function someFunction()
{
    var someVar = 'function scope';
    console.log(window.someVar);//logs global
    console.log(someVar);//logs function scope
}

最後に、これは率直に言って好ましいことですが、関数を呼び出すたびに、データを引数として関数に渡します。

function myFunction (long, lat)
{
     console.log('do stuff with ' + long + ' & ' + lat);
}
myFunction(123, 456);//logs do stuff with 123 & 456
于 2013-02-27T11:24:30.477 に答える