我有一个网址,让我们说“www.google.com”,我想知道相应的IP。我只有javascript和jQuery。
以下网址:http://www.fileformat.info/tool/rest/dns.json?q=google.com输入浏览器的地址栏后会显示以下JSON结果:
{"result":{"message":"OK","code":200},"answer":{"message":"successful","values":[{"address":"74.125.228.7","ttl":300},{"address":"74.125.228.3","ttl":300},{"address":"74.125.228.8","ttl":300},{"address":"74.125.228.9","ttl":300},{"address":"74.125.228.2","ttl":300},{"address":"74.125.228.0","ttl":300},{"address":"74.125.228.1","ttl":300},{"address":"74.125.228.4","ttl":300},{"address":"74.125.228.6","ttl":300},{"address":"74.125.228.14","ttl":300}, {"address":"74.125.228.5","ttl":300}],"code":0},"question":{"q":"google.com","type":"A"}}
太好了,这就是我需要的! 但是现在,当我尝试通过这个AJAX查询获得相同的结果时
$.ajax({
url: 'http://www.fileformat.info/tool/rest/dns.json?q=www.google.com',
success: function(data) {
console.log(data);
},
error: function(a,b) {
console.log(a, b);
}
});
查询返回代码200,但是触发了错误回调,为什么?
Object { readyState=4, status=404, statusText="error", more...} error
我肯定错过了一些东西,但无法弄清楚是什么。我试图将'dataType'设置为每个可能的值或将参数放入'data'字段,但没有任何作用。这是某种交叉问题吗?
如果有人可以向我解释我做错了什么,以及如何实现我正在寻找的东西,我会很高兴。
答案 0 :(得分:0)
试试这个解决方案
var addressArray = [];
for (x in data) {
if (x == "answer") {
var answer = data[x];
for (y in answer) {
if (y == "values") {
var values = answer[y];
for (z in values) {
var addressJson = values[z];
for (a in addressJson) {
if (a == "address") {
addressArray.push(addressJson[a]);
}
}
}
}
}
}
}
答案 1 :(得分:0)
好的,经过大量搜索后,我发现这是一个Cross Origin问题。 我通过使用JSONP解决了它,即我为服务提供了一个回调函数。
$.ajax({
dataType: 'jsonp'
url: 'http://www.fileformat.info/tool/rest/dns.json?callback=getIP&q=www.google.com',
});
function getIP(data) {
console.log(data.answer.values[0].address);
}