2013-11-20 74 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); 
}