2017-02-02 40 views
0

我試圖使用jQuery的GET方法獲取JSON數據。我嘗試將一個函數作爲參數傳遞給GET方法,並在之後執行它。由於GET方法可以將函數作爲參數,我試圖調用一個函數,但得到一個錯誤。我想我理解錯了嗎?將一個函數作爲參數傳遞給.get方法並稍後執行

HTML

<button class="euro">Euro</button> 

的JavaScript(使用jQuery庫):

<script> 

$(function() { 
    $('button.euro').click(function() { 
    $.get('http://api.fixer.io/latest', myfun(data)); 

    function myfun(data) { 
     $('#output').text(data.rates.INR); 
    } 
    }); 
}); 

</script> 
+0

在$ .get函數中,不要執行函數(通過給出括號)。試試這個:'.get('http://api.fixer.io/latest',myfun);' –

回答

0

有你爲什麼需要通過名稱函數,而不是匿名什麼特別的原因? 下面的構造將在調用完成後執行函數。

$.get('http://api.fixer.io/latest', function(data){ 
    $('#output').text(data.rates.INR); 
}); 

此外,您可以使用.done(函數(){})來鏈接函數。

+0

我想通過命名函數,因爲這個函數也會被其他函數重用 – Nag

0

什麼你試圖做的是要執行回調函數

完成一個異步處理後的回調函數被調用(比如從服務器獲取數據)

你可以只用一個匿名函數,使生活更輕鬆是這樣的:

$(function() { 
    $('button.euro').click(function() { 
    $.get('http://api.fixer.io/latest', function(data){ 
     $('#output').text(data.rates.INR); 
    }); 
    }); 
}); 

,或者如果你堅持做你的方式,通過調用回調函數裏面的函數

你可以這樣做:

$(function() { 
    $('button.euro').click(function() { 
    $.get('https://api.fixer.io/latest', function(data) { 
     myfun(data) 
    }); 
    }); 
}); 

function myfun(data) { 
    alert(data.rates.INR); 
} 
相關問題