2012-09-04 69 views
-3

我想在json中做一個即時搜索功能。代碼看起來是正確的,但絕對不行。你能幫我看看並幫我解決它嗎?提前致謝。json即時搜索

http://jsfiddle.net/hMyr7/

+4

我們需要的不僅僅是「這裏是我的代碼,修復它」。它出什麼問題了?什麼不工作? –

+0

你爲什麼使用'async:false'? AJAX被假設爲異步 – MrOBrian

+2

首先,您的jsFiddle包含MooTools而不是jQuery。 Fix'd:http://jsfiddle.net/hMyr7/7/ – RichardTowers

回答

1

您的JSONP代表您的AJAX呼叫收到的數據。 It是這樣的:

jsonCallback([{ 
    "id": 41, 
    "title": "My city", 
    "permalink": "http:\/\/mykolaiv.cityfacts.pro\/my-city\/", 
    "content": "", 
    "meta": { 
     "ultimatum_layout": [""], 
     "_edit_last": ["1"], 
     "_edit_lock": ["1346784971:1"] 
    }, 
    "excerpt": "", 
    "date": "2012-09-04 18:26:50", 
    "author": "oyeremchuk", 
    "categories": [], 
    "tags": [null] 
}]); 

最外面的節點是一個數組。要訪問該數組中的第一個元素,您可以使用索引器:response[0]。那麼問題是「你想從你的數據中得到什麼?」

從您的js判斷,您可能想要遍歷整個響應,並從每個項目拉id,titlepermalink。這應該爲你的回調做:

success: function(response) { 
     $.each(response, function(i, item) { 
      var data_id = item.id; 
      var data_title = item.title; 
      var data_viewCount = item.permalink; 

      var final = "<div id='id'><div>" + data_id + "</div><div id='title'>" + data_title + "</div></div>"; 

      $("#results").append(final); 

     }); 
    } 

http://jsfiddle.net/hMyr7/15/

+0

非常感謝RichardTowers。我只想在json中搜索數據並立即顯示結果。 – qqruza

+0

RichardTowers當我輸入城市時,我得到了一些即時結果,但只有其中一個得到了「城市」一詞的正確結果......有什麼可以幫助我的。我非常感謝你的幫助。 – qqruza

+0

您應該在服務器端對其進行整理。例如'ci'返回[多個結果](http://mykolaiv.cityfacts.pro/?s=ci&feed=json&callback=jsonCallback)。儘管你可以在客戶端攻擊它(http://jsfiddle.net/hMyr7/16/)。 – RichardTowers

0

你檢查你的JavaScript控制檯?

"Uncaught TypeError: Cannot read property 'items' of undefined" - 因爲在您的JSON中沒有datadata.items

嘗試改變

if (response.data.items) { 

if (response.data && response.data.items) { 

,它至少會失敗優雅。

http://jsfiddle.net/mblase75/hMyr7/2/

+0

非常感謝Blazemonger。請看看我的json。 http://mykolaiv.cityfacts.pro/?s=city&feed=json&callback=jsonCallback 你能幫助我嗎? – qqruza

+0

嗨凱文,這是錯誤的鏈接抱歉http://mykolaiv.cityfacts.pro/?s=city&feed=json&callback=jsonCallback – qqruza

+0

那裏沒有'數據',有或沒有'data.items'。這需要固定在服務器端。 – Blazemonger

3

我不得不對你的jsfiddle使jQuery的...

一旦我這樣做了,似乎該服務器爲Ajax請求返回一個500服務器錯誤。

您需要調查服務器端響應,因爲我們無能爲您解決此問題。

+0

對不起,打擾你....這裏是鏈接 http://mykolaiv.cityfacts.pro/info/?feed=json&callback=jsonCallback – qqruza