2017-02-02 5 views
0

jQueryのGETメソッドを使用してJSONデータを取得しようとしています。私はGETメソッドのパラメータとして関数を渡して、それを実行しようとしました。 GETメソッドがパラメータとして関数をとることができるので、関数を呼び出そうとしましたが、エラーが発生しました。私はコンセプトが間違っていると思ったのだろうか?.getメソッドのパラメータとして関数を渡して後で実行します。

HTML

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

(jQueryライブラリを使用して)JavaScriptの

<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(function(){})を使用して関数を連結できます。

+0

名前付き関数は他の関数によっても再利用されるので、渡したいです – Nag

0

何をしようとしていること

(サーバからデータを取得するよう)あなたは非同期処理が完了した後、コールバック関数が呼び出される

コールバック関数を実行したいということですあなたはこのような生活を楽にするために無名関数を使用することができます。

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

をしたり、コールバックの内側に、あなたの関数を呼び出すことによって、それをあなたの方法を行うことを主張すれば

を行うことができます

:JavaScriptが非同期言語である:

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

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

コンセプトは、ということです。つまり、2番目の関数は、他の関数(またはプロセス)が完了するまで待機しません。イベントエミッタは並列処理を実行し、実行するために完了したプロセスをリッスンします。

コールバック関数(可読コードではありません)を使用することは、現在存在しません。 YoはPromisesまたはGeneratorsを使ってコードのこの部分を書くことができます。それはあなたの好みによって異なります。 (http://blog.mgechev.com/2014/12/21/handling-asynchronous-calls-with-es6-javascript-generators/

関連する問題