2017-02-02 41 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); 
} 
相关问题