-1

我有一个 ajax 函数,它从服务器上的 xml 文件中检索数据。我正在尝试获取仅在您位于特定区域内时出现的文件(因此使用经度和纬度)。为此,我需要在 URL(在 ajax 函数中)中附加经度和纬度,以便我可以访问该文件。我在 ajax 函数之外声明了 2 个全局变量,分别保存经度和纬度。但我不知道如何在 ajax 函数中调用变量(以便我可以附加到 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

三种方式:既然你已经创建了(邪恶的)全局变量,你可以从一个函数中引用它们(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 回答