2013-02-27 122 views
-1

我有一個ajax函數,它從服務器上的xml文件中檢索數據。我正在嘗試獲取僅在特定區域內出現的文件(因此使用經度和緯度)。爲了做到這一點,我需要在URL(它在ajax函數中)附加經度和緯度,以便我可以訪問該文件。我已經在ajax函數之外聲明瞭2個全局變量,它們包含經度和緯度。但我不知道如何調用ajax函數中的變量(以便我可以附加到URL來檢索文件)。任何人都可以請告訴我該怎麼做?請給我一些例子。在ajax函數中使用變量(javascript)

謝謝

下面是代碼:(我沒有把我的真實地址)

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"); 
    }); 
    } 
+2

如果你不顯示你的代碼,是什麼讓你認爲人們將能夠有效地幫助你?至少,不顯示它會讓他們這麼做更加困難和耗費時間。 – 2013-02-27 11:19:03

+0

如果你已經定義了全局變量,那麼你可以直接使用它。 – 2013-02-27 11:20:50

+0

同意 - 代碼將幫助我們。 – richb01 2013-02-27 11:21:27

回答

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 
    }, 
    // ... 
}); 
+0

我試過這種方法,但它不起作用 – 2013-02-27 13:20:10

+0

@OghaleBlessingEtomu:任何時候當你發現自己寫的「......沒有工作......」或類似的技術問題時,退格並記下*完全是*你期望的,*確切地說*發生了什麼事情,爲什麼你認爲這是錯誤的,並且可能存在任何錯誤報告系統的輸出(所有主流瀏覽器現在都有一個控制檯,例如顯示錯誤的地方)。上述兩項都正確,工作正常。 – 2013-02-27 13:22:44

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 
+0

感謝您的回答。那麼我該如何在ajax url字符串中調用變量? – 2013-02-27 12:21:08