2011-09-15 54 views
0

這個通過谷歌API的簡單的網絡搜索是搖搖欲墜的。有時它會返回4個第一個結果(因爲它應該),有時JSON認爲它是「成功」,但responseData爲空。爲什麼我得到這些不一致?這是一個異步問題嗎?我如何使它更穩定? (當我搜索在谷歌的圖像是搖滾穩定)爲什麼不簡單通過getJSON谷歌網頁搜索總是工作?

var baseUrl = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&start=0&q="; 
var searchTerm = "obama"; //Lots of hits 

$(document).ready(function() // don't do anything until the document is loaded. 
{ 
$.getJSON(baseUrl + searchTerm + "&callback=?", function(json) // call getJSON providing the complete url with search term and a JSONP callback 
    { 
    $.each(json.responseData.results, function(i, gResults){ 
     console.log("title: " + gResults.titleNoFormatting); 
    }); 
    }); 
}); 

當它失敗我覺得這在JSON數據結構:

json.responseDetails: "Suspected Terms of Service Abuse. Please see 
    http://code.google.com/apis/errors" 

所以谷歌認爲我攻擊它請求太多。我必須設置API密鑰嗎?現在我只包括

<meta name="google-site-verification" content="myAPIkey-Herevbng66r" /> 

但我在我的本地計算機上運行,​​所以也許這並不能幫助......

+0

我有同樣的問題。它確實與你在本地運行它有關。我在部署的服務器上運行的相同代碼庫不會出錯。這個問題阻礙了我的發展,如果有人能夠考慮一個理由或解決方案,我會很感激。 – Baz

回答

0

試試這個:

function(json) // call getJSON providing the complete url with search term and a JSONP callback 
    { 
     if (json.responseData === null) 
      console.log("json returned nothing"); 
     else 
     $.each(json.responseData.results, function(i, gResults){ 
      console.log("title: " + gResults.titleNoFormatting); 
     }); 
    }); 
}); 
+0

謝謝,但此練習的目的不是爲了獲取任何javascript錯誤,而是爲了使它更穩定。 「奧巴馬」應該返回百萬的點擊權?那爲什麼google/ajax/json返回null並且仍然認爲它是「成功」? – TOMvonMOM