Javascript 将函数作为参数传递给.get方法,然后执行

Javascript 将函数作为参数传递给.get方法,然后执行,javascript,jquery,Javascript,Jquery,我试图使用jQuery的get方法获取JSON数据。我试图将一个函数作为参数传递给GET方法,然后执行它。由于GET方法可以将函数作为参数,所以我尝试调用函数,但得到了一个错误。我想我理解错了 <script> $(function() { $('button.euro').click(function() { $.get('http://api.fixer.io/latest', myfun(data)); function myfun(data) {

我试图使用jQuery的get方法获取JSON数据。我试图将一个函数作为参数传递给GET方法,然后执行它。由于GET方法可以将函数作为参数,所以我尝试调用函数,但得到了一个错误。我想我理解错了

<script>

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

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

</script>
HTML

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

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

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

</script>
欧元
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>

$(函数(){
$('button.euro')。单击(函数(){
$.get('http://api.fixer.io/latest",美芬(数据),;
功能myfun(数据){
$('#output').text(data.rates.INR);
}
});
});

您需要传递name函数而不是匿名函数,有什么特别的原因吗? 以下构造将在调用完成后执行函数

<script>

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

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

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

您还可以使用.done(function(){})来链接函数。

您试图做的是执行一个回调函数

<script>

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

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

</script>
异步过程完成后(例如从服务器获取数据)调用回调函数

<script>

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

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

</script>
您可以使用匿名函数简化生活,如下所示:

<script>

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

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

</script>
$(function() {
  $('button.euro').click(function() {
    $.get('http://api.fixer.io/latest', function(data){
      $('#output').text(data.rates.INR);
    });
  });
});
或者,如果您坚持按自己的方式执行,请在回调函数中调用您的函数

<script>

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

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

</script>
你可以做:

<script>

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

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

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

function myfun(data) {
   alert(data.rates.INR);
}

概念是:JavaScript是一种异步语言。这意味着第二个函数不会等待任何其他函数(或进程)完成。事件发射器并行发射进程并侦听已完成的进程运行

<script>

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

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

</script>

使用回调函数(不可读的代码)不是现在存在的好方法。您可以使用承诺或生成器编写这部分代码。这取决于你的品味。()

在$.get函数中,不要执行该函数(通过给出括号)。尝试以下操作:
$.get('http://api.fixer.io/latest",美芬),我想传递命名函数,因为该函数也将被其他函数重用
<script>

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

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

</script>