2016-07-07 19 views
2

У меня есть запрос AJAX, который ничего не делает, и я не знаю почему. Это не дает мне никакого кода error.my:parseInt значения нет ошибки

$("#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 обработчика. Я считаю, что вы определили обработчик click, прежде чем на самом деле добавили #idButton в HTML. Вы должны убедиться, что элемент уже существует, когда обработчик определен, возможно, помещая его в $(function() {}) или использовать .on(), который также зарегистрирует обработчик при создании будущего элемента.

Случай 1:

У вас есть script тег внутри вашей головы и вы определяете #idButton внутри body. В этом случае этот код должен решить проблему:

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

Случай 2:

#idButton создается и добавляется во время выполнения. В этом случае

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

должен решить эту проблему. Идеально переключите body на самый нижний селектор узлов в дереве, уже существующий при определении обработчика и который содержит кнопку.

+0

хорошо, я попытался удалить кнопку, и это дает мне Nan –

+0

поэтому проблема должна быть в функции (данные) –

+0

@IrinaFarcau вы заявили, «У меня есть запрос AJAX, который ничего не делает, и я не» я знаю почему. ". Если проблема находится внутри функции успеха, которая является обратным вызовом для запроса AJAX, тогда оператор ошибочен, так как запрос был отправлен на сервер, на который ответил. –

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 - Проверьте, что вызов ajax возвращает ** данные ** с ** 200 Код ответа ** с помощью Inspect Elements. –

+0

Yess, но как его решить? В ответ был также возвращен код ответа 200. –

 Смежные вопросы

  • Нет связанных вопросов^_^