2013-11-20 72 views
0

我有一个网址,让我们说“www.google.com”,我想知道相应的IP。我只有javascript和jQuery在我的处置。AJAX请求从URL获得IP

以下网址: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

尝试这种解决方案

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]); 
         } 

        } 

       } 

      } 

     } 


    } 


} 
+0

现在addressArray将包含所有的IP – Innovation

+0

嗯,我知道如何从JSON对象中提取IP地址,问题是,我不明白JSON对象为一个错误是triggerd每次。 – Lanz

0

好了,很多搜索后,我发现这是一个跨源问题。 我使用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); 
}