2016-07-07 13 views
2

私は何もしないAJAXリクエストを持っていますが、私はなぜそれがわかりません。 それは私にどのerror.myコードを与えるものではありません:parseInt values no error

$("#idButton").click(function(){ 
    $.ajax({ 
      type: "GET", 
      url: "https://api.fixer.io/latest?base=EUR", 
      data: {}, 
      success: function(data) { 
        $("#idUsd").val(parseInt(data['rates']['USD']) * 
        parseInt($("#idEur").val())); //I think the error is here 
      }, 

      error: function(x, e) { console.log(e); } 
    }); 
}); 

誰も私を助けることができますか?

EDIT:

screenshot

答えて

0

あなたのAJAX要求はclickハンドラ内です。実際に#idButtonをHTMLに追加する前に、clickハンドラを定義したと思います。ハンドラが定義されたときにその要素が既に存在していることを確認し、$(function() {})に入れるか、または.on()を使用して、将来の要素作成でハンドラを登録する必要があります。

ケース1:

あなたはあなたの頭の中scriptタグを持っていて、body#idButtonを定義します。この場合、このコードは、問題を解決する必要があります:

$(function() { 
    $("#idButton").click(function(e) {/*Your handler*/}); 
}); 

ケース2:

#idButtonが作成され、実行時に追加されます。その場合

$('body).on('click', '#idButton', function(e) {/*Your handler*/}); 

この問題を解決する必要があります。理想的には、bodyを、ハンドラーを定義しボタンを含むときに既に存在するツリーの最も低いノードセレクターに切り替えます。

+0

、私はボタンを削除しようとしましたが、それはそう問題は、機能(データ) –

+0

を与え、あなたは「私は何もしないAJAX要求を持っていると私はドン」に述べましたなぜ知っているの? " AJAXリクエストのコールバックであるsuccess関数の内部に問題がある場合、リクエストはサーバに送信されたため、文は間違っています。 –

+0

@IrinaFarcauでなければなりません私のナン –

0

セキュリティ上の理由から、AJAXはクロスドメインコールをサポートしていません。

プロキシをビルドすると、ドメインでURLを呼び出すことができます。 PHPでは、あなたはファイルproxy.phpを作成することができます。

<?php 
    readfile('https://api.fixer.io/latest?base=EUR'); 
    exit; 

次に、この新しいURLを使用する:

url: "proxy.php", 

希望の成功で

1

を助けている、あなたはdataをチェックする必要があると$("#idEur").val()undefinedまたはnullの場合は、実装を開始します。うまく

$("#idButton").click(function(){ 
    $.ajax({ 
      type: "GET", 
      url: "https://api.fixer.io/latest?base=EUR", 
      data: {}, 
      success: function(data) { 
       if((data != undefined) && (data != null) && 
         (data['rates'] != undefined) && (data['rates'] != null) && 
        (data['rates']['USD'] != undefined) && (data['rates']['USD'] != null) && 
        (data['rates']['USD'] != "") && ($("#idEur").val() != undefined) && 
        ($("#idEur").val() != null) && ($("#idEur").val() != "")) { 

        $("#idUsd").val(parseInt(data['rates']['USD']) * 
        parseInt($("#idEur").val())); //I think the error is here 
       } 
      }, 

      error: function(x, e) { console.log(e); } 
    }); 
}); 
+0

これは動作しません。何もしません。 –

+0

@IrinaFarcau - Inspect要素を使用して、** 200レスポンスコード**でajax呼び出しが** data **を返していることを確認します。 –

+0

Yess、しかしそれを解決する方法は? 200の応答コードも最初に戻っていました。 –

関連する問題