2011-06-24 71 views
0

當我使用JSON數據的獲取:

$.getJSON("http://192.168.1.9:8983/solr/db/select/?wt=json&&start=0&rows=100&q="+elegant+"&hl=true&hl.fl=description&hl.usePhraseHighlighter=true&json.wrf=?", function(newresult){ 

,並使用該JSON數據作爲

$.each(newresult.highlighting, function(i, hitem){ 
     alert(hitem.description[0]); 

}); 

然後,我沒有得到說明字段值。

但是當我將變量中的整個數據分配時,比如說newresult,然後運行$.each()它正在工作,就像我在http://jsfiddle.net/taL8x/1/中那樣。請告訴我當通過getJSON()使用數據時有什麼問題。

+2

這是一個巨大的例子。你可以刪除一些東西,並使其更簡單? – tjameson

+0

另外,你可以把它放在公共港口上,這樣我們可以現場看看它嗎?這可能是JSON語法或其他問題。 – tjameson

回答

0

如果在alert處傳遞行,newresult.highlighting應該是對象或數組。那麼,這不是關於同源策略的問題。並且您正在指定json.wrf=?進行回叫。 也許你錯過了突出顯示數組元素的結構。也許。 嘗試訪問directry,並確認數組的結構。 你期待:

{ 
"highlighting": [ { "description" : "foo" }, { "description" : "bar" } ] 
} 

但它可能是

{ 
"highlighting": { "A001" : { "description" : "foo" }, "A002" : { "description" : "bar" } } 
} 
0

您的請求很可能是由同源策略阻止的。如果該服務位於不同的網址上,則必須使用JSONP

+1

不一定。如果他控制了Web服務器,他可以將服務器上的Access-Control-Allow-Origin標頭設置爲「*」,而不必使用JSONP。這是[Cors]的一部分(http://www.w3.org/TR/cors/)。 – tjameson