parseInt值没有错误

时间:2016-07-07 06:35:01

标签: javascript jquery ajax

我有一个没有做任何事情的AJAX请求,我不知道为什么。 它没有给我任何错误。我的代码:

$("#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); }
    });
});

任何人都可以帮助我吗?

编辑:

screenshot

3 个答案:

答案 0 :(得分: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); }
    });
});

答案 1 :(得分:0)

您的AJAX请求位于click处理程序中。我相信您已经在将click实际添加到HTML之前定义了#idButton处理程序。您需要确保在定义处理程序时元素已经存在,可能将其放入$(function() {})或使用.on(),这将在将来的元素创建中注册处理程序。

案例1:

您的头脑中有一个script标记,您可以在#idButton内定义body。在这种情况下,此代码应该可以解决问题:

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

案例2:

#idButton在运行时创建并添加。在那种情况下

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

应该解决问题。理想情况下,在定义处理程序并包含按钮时,将body切换到树中已存在的最低节点选择器。

答案 2 :(得分:0)

出于安全原因,AJAX不支持跨域调用。

构建代理,以便您可以在您的域上调用网址。 在php中,您可以创建一个文件proxy.php:

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

然后使用这个新网址:

url: "proxy.php",

希望有所帮助