由于某些原因我无法获得JSON的值,任何人都可以帮助我吗?
function forex() {
var to = document.getElementById("to").value;
alert(to);
var from = document.getElementById("from").value;
alert(from);
var amount = document.getElementById("amount").value;
alert(amount);
$.getJSON("http://rate-exchange.appspot.com/currency?from=" + from + "&to=" + to + "&q=" + amount, function (response) {
alert(response);
});
}
答案 0 :(得分:1)
由于Same Origin Policy,您无法通过ajax访问rate-exchange.appspot.com上的资源,因为您的Javascript在其他域上执行。
在您的情况下,此特定站点支持JSONP,因此您可以使用jQuery的JSONP实现来绕过同源策略。 JSONP的工作原理是将目标URL包含为<script>
标记并使用不受同源策略约束的回调。
$.getJSON()
方法如果在网址中找到callback=?
等参数,则会使用JSONP。
示例:
function forex() {
var to = document.getElementById("to").value;
var from = document.getElementById("from").value;
var amount = document.getElementById("amount").value;
$.getJSON("http://rate-exchange.appspot.com/currency?&callback=?", { from : from, to : to, q : amount }, function (response) {
alert(response.v);
});
}
我还将手动URL变量更改为首选对象,因为jQuery将处理URL编码。
答案 1 :(得分:0)
而不是以下代码:
$.getJSON("http://rate-exchange.appspot.com/currency?from=" + from + "&to=" + to + "&q=" + amount, function (response) {
alert(response);
});
使用以下代码:
$.ajax({
url: "http://rate-exchange.appspot.com/currency?from=" + from + "&to=" + to + "&q=" + amount,
dataType: 'jsonp',
success: function(response) {
alert(response.v);
}
});