2015-05-09 23 views
0

以下URL前給了一個JSON輸出: http://suggestqueries.google.com/complete/search?client=youtube&ds=yt&q=Query我如何解析Google的建議查詢JSON響應?

現在它輸出以下:

window.google.ac.h(["Query",[["query",0],["query optimization",0],["query in access 2013",0],["query processing and optimization",0],["query optimization in dbms",0],["querying microsoft sql server 2012",0],["query in access 2010",0],["query letter",0],["querying microsoft sql server 2012 tutorial",0],["query access",0]],{"k":1,"q":"4-l7QUSZEiiQKaSq-yXfrtfHpd0"}]) 

好奇至於如何我可以解析成JSON

回答

1

這是JSONP這一點。

如果你調用這個使用JSONP技術(加入<script>標籤與src=屬性設置爲網址的頁面),那麼你就需要作出JSONP調用處理結果之前聲明函數window.google.ac.h

如果你調用這個用ajax或服務器上,那麼你有兩種選擇:

  1. 聲明功能可按window.google.ac.h處理結果,那麼EVAL響應。 (因爲,這就是加入<script>標籤呢,它evals在你的頁面的JavaScript文件,所以你基本上只是模仿JSONP)

    function window.google.ac.h (json) { 
        // process your response here 
    } 
    var s = document.createElement('script'); 
    s.src = 'http://suggestqueries.google.com/complete/search?' + 
         'client=youtube&ds=yt&q=Query'; 
    document.body.appendChild(s); 
    

    或者,如果您收到通過其他手段迴應:

    function window.google.ac.h (json) { 
        // process your response here 
    } 
    eval(response); 
    
  2. 從響應中刪除外部window.google.ac.h( ..和)然後將其解析爲JSON。

    var json = response.replace(/^.*?\(/,'').replace(/\)$/,''); 
    
+0

AHK疑難雜症:d對不起,問這樣一個新手的問​​題,但有可能給的代碼片段,以它是如何在上述情況下,不是或兩者兼而有之?從未使用過JSONP,因此有點困惑 – user3721307