2012-10-30 26 views
1
$.post("http://openexchangerates.org/", parameters, 
    function (data) { 
     var currencyData = eval('('+data+')'); 
     currency = currencyData["currency"]; 
    } 
); 
// I want to access currency here. But I am unable to access it. 
+5

有時我很驚訝的事多少可以去錯在這麼短的代碼... – elclanrs

+0

你想用它做什麼?您必須將它存儲在某個地方,或者將您的代碼訪問到回調函數內部以訪問此範圍,否則這是不可能的。 – Ian

+0

您的問題是[可變範圍](http://stackoverflow.com/a/500459/870729) –

回答

3

嘗試在ajax函數外聲明貨幣變量。 你可以先設置一個默認值,以避免歧義,如果返回「未定義」(用於調試)

function getCurrency(){ 

    var currency = 'debug'; //TODO: remove this value once code works. 

    $.post("http://openexchangerates.org/", parameters, 
     function (data) { 
     var currencyData = eval('('+data+')'); 
     currency = currencyData["currency"]; 
    } 
    ); 

    console.log(currency); 

} 
+0

請注意,如果它記錄'調試',這仍然記錄''調試'';-) –

+0

,這是用來通知我們說ajax調用有問題。顯然這個網絡服務需要註冊,所以我沒有嘗試它。此外,'參數'參數在此處未定義。代碼需要在應用程序其餘部分的上下文中運行才能被測試。 – CodeToad

1

我要出去猜猜這是一個交叉來源問題。

如果我是對的,你需要設置你的http服務器作爲openexhangerates.org的代理。

您的回調是否執行?

相關問題