我有一个没有做任何事情的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); }
});
});
任何人都可以帮助我吗?
编辑:
答案 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",
希望有所帮助