2012-02-06 114 views
0

在我的程序中使用全局ld對象。它的內容可以手動輸入,從服務器獲取,或從本地存儲讀取。 writeload()函數使用ld對象,並且當從本地存儲中拾取對象時,一切都很好。我曾希望JSON調用會使用全局存儲ld,但它顯然不會。因此我的問題是:如何將JSON ld對象獲取到全局ld對象。我敢肯定,我可以通過在JSON調用中複製它的代碼來執行writeload()函數,但它很長,我希望儘可能避免這種情況。歡迎所有建議以及關於更好的結構/做事方式的任何想法。非常感謝。通過JSON調用傳遞對象

switch (oSource.from) { 
    case 'server': 
     $.getJSON('reports/' + oSource.filename,function(ld) { 
      writeload(); 
     }); 
     break; 
    case 'local': 
     ld=$.jStorage.get(oSource.filename); 
     writeload(); 
     break; 
} 
+1

我希望我能理解這個問題。如果我的評論有其他建議,請澄清。函數中的ld參數是服務器應返回的內容。它不是你想要使用的全局變量。 – akonsu 2012-02-06 08:08:54

+0

@akonsu我希望的是JSON調用會填充全局ld,但它不會。我需要做的是獲取ld參數的內容到全局ld的內容。我知道JSON工作正常,因爲我可以在JSON調用中成功查看其內容,但是如何將JSON ld的內容複製到全局ld。在JSON調用時,全局ld沒有有意義的數據。感謝您看看這個。 – Terry 2012-02-06 08:16:12

回答

0

這個怎麼樣:

$.getJSON('reports/' + oSource.filename, function(new_ld) { 
    ld = new_ld; 
    writeload(); 
}); 
當你發送一個請求到你的URL( '報道/' + oSource.filename)

,它返回一個對象,和jQuery您正在使用您的來電以此對象作爲參數功能。該參數在函數調用中稱爲new_ld,因此您只需將其分配給您的全局變量。在你原來的文章中,你有一個名爲'ld'的函數參數,它有效地隱藏了函數範圍中具有相同名稱的全局變量。

+0

我的妻子剛剛打電話給我,並堅持我要睡覺(過去的午夜在這裏 - 俄勒岡州是美國)。我會在早上第一次嘗試。因爲我是一個新手,所以我不會不理解它,但是我會一直研究它,直到我做到。謝謝。 – Terry 2012-02-06 08:23:50

+0

工程!非常感謝。我應該想到這一點,但顯然沒有。 – Terry 2012-02-06 17:25:11

0

據我看到處理函數中的參數隱藏全局變量。 您可以嘗試:

switch (oSource.from) { 
    case 'server': 
     $.getJSON('reports/' + oSource.filename, function (response) { 
     ld = response; 
     writeload(); 
     }); 
    ...