2011-11-14 58 views
1

我已經設法從我的數據庫中獲取JSON輸出以用於jQuery UI自動完成,並且工作正常。好吧,我真的沒有與JSON的東西?

麻煩的是,它似乎AutoComoplete插件做了我所有的JSON數據解析,所以我仍然要弄清楚如何實際完成。

我有一個URL,http://test.hartnollguitars.co.uk/jsonOut/products.aspx?term=761294042656&barcode=yes(作爲一個例子),它給我一個來自同一個JSON輸出的記錄,就像我用於自動完成一樣,我試圖在單個情況下使用這個記錄輸出。

所以我一直在谷歌搜索和亂七八糟的jQuery getJSON,但我似乎無法獲得信息。

$.getJSON("jsonOut/products.aspx?barcode=yes", function() { alert(data.label); }); 

是怎麼樣的,我在哪裏,現在,我知道這是不對的,我已經試過這個代碼之後從jQuery網站範例,其它各種排列,但我不能得到的輸出,我需要。

這顯然是因爲我有不知道我在做什麼,但有人只是解釋你如何:

  1. 從單一的記錄獲得的數據是這樣
  2. 獲取數據從一系列數據並循環顯示輸出(例如從一個簡單的對象,如事件的Facebook Graph的FQL輸出)

所有幫助非常感謝!

+0

您確定數據正在傳輸嗎? Firebug或Chrome或IE的開發人員工具可以幫助您確定。 – Blazemonger

+1

你提供JSON數據嗎?如果是這樣,爲什麼添加括號?只需使用'{「label」:「Boss TR-2 Tremolo Pedal」,「price」:79,「id」:1287}'。以同樣的方式工作,可能會解決你的第一個問題。用括號表示一個數組,但如果只有一個條目,爲什麼要這樣做? – Paul

+0

明白了......我認爲這是與方括號有關,但它們是相關的,它也用於多個結果查詢。 –

回答

1

請記住使用絕對網址,而不是親戚。您粘貼的代碼會將url附加到當前目錄,所以只有在來自/時纔會起作用。 返回的JSON是一個數組,所以你必須取消引用一個元素:

$.getJSON("/jsonOut/products.aspx?barcode=yes", function (data) { alert(data[0].label); }); 

或做更多有益的事情將是:

$.getJSON("/jsonOut/products.aspx?barcode=yes", function (data) { 
    for (var i = 0; i < data.length; ++i) { 
     alert(data[i].label); 
    } 
}); 
+0

這很完美!謝謝! –

+0

我不得不接受這個答案,因爲它也給我數據循環。沒有進攻所有其他優秀的答案! :D –

4

data不會空穴來風,它的參數,你的成功的功能

$.getJSON(
    "jsonOut/products.aspx?barcode=yes", 
    function (data) { 
     alert(data.label); 
}); 

你輸出數組

[ 
    { 
     "label": "Boss TR-2 Tremolo Pedal", 
     "price": 79, 
     "id": 1287 
    } 
] 

多數民衆贊成「[]」設有分公司代表什麼,所以你數據可以另一種方式訪問​​

data[0].label 

請考慮開發在Firefox和使用FireBug,那麼你可以寫

console.log(data); 

而不是alert(),這將給你更多的洞察你的對象。

+0

哦,非常好。我從來沒有使用過console.log,但我會嘗試它。我確實使用Firefox/Firebug和Chrome Developer工具,我發現它們各有利弊。通常Firebug會贏,但Chrome中的開發人員工具有一些很好的功能。 –

+0

偉大的,console.log也可以在chrome中工作 - 但我個人認爲Firebug(allway)。 – FloydThreepwood

4

我看着你的JSON輸出: [{"label":"Boss TR-2 Tremolo Pedal","price":79,"id":1287}]

問題是,您的代碼輸出一個對象列表。 改爲嘗試data[0].label

+0

這就是它的感謝。我認爲這是與方括號有關,但它們是相關的,它也用於多個結果查詢。 –

+0

沒有問題。給你一點建議:如果你使用Firebug,你可以使用Firebug控制檯來簡單地將你的JSON粘貼到Firebug中。 例如:'data = {「a」:「b」}'如果您輸入data [「a」],則會輸出'b';) – MRH