2011-11-14 9 views
1

jQuery UI AutoCompleteで使用するためにデータベースからJSON出力を取得できました。これは問題なく動作しています。私は本当にJSONのものを手に入れませんか?

問題は、AutoComopleteプラグインが私のためにJSONデータをすべて解析しているようだから、実際にどのように行っているかはまだ分かります。

私はオートコンプリートに使用したのと同じJSON出力から単一のレコードを提供するURL、http://test.hartnollguitars.co.uk/jsonOut/products.aspx?term=761294042656&barcode=yesを持っています。この単一のレコード出力を1つのケースに使用しようとしています。

私はグーグルしていて、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}'を使ってください。同じように動作し、おそらくあなたの最初の問題を解決するでしょう。角カッコで配列を始めるが、エントリが1つしかない場合はなぜこれを行うのか? – Paul

+0

これは、角カッコで囲まれたものだと思っていましたが、関連性があり、複数の結果クエリにも使用されています。 –

答えて

1

リムーバーは、相対的なURLではなく絶対的なURLを使用します。貼り付けたコードは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); 
}); 

そして、「[]」brachesが放置何ザッツあなたの出力配列

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

、どこから来たので、あなたはありません別の方法でデータにアクセスすることができます

data[0].label 

Firefoxと放火魔を使用して、あなたの代わりに、アラートの

console.log(data); 

を書くことができ()、ウィッヒは、あなたのオブジェクトにあなたがはるかに大きい洞察力を与えるだろう。

+0

ああ、優秀。私はconsole.logを使ったことはありませんが、試してみます。 Firefox/FirebugとChromeデベロッパーツールを使用していますが、どちらも賛否両論あります。一般的にはFirebugが勝ちますが、Chromeのデベロッパーツールにはいくつかの優れた機能があります。 –

+0

素晴らしいですが、console.logはクロームでも動作しますが、私は個人的にFirebug(allway)を優先します。 – FloydThreepwood

4
私はあなたのJSON出力を見

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

問題は、あなたのコードがオブジェクトのリストを出力するということです。 代わりにdata[0].labelを試してください。

+0

それはありがとうございます。大括弧で囲まれたものだと思っていましたが、関連性があり、複数の結果クエリにも使用されています。 –

+0

No Prob。 Firebugを使用する場合、Firebug Consoleを使用してJSONをFirebugに貼り付けるだけでよいでしょう。 例: 'data = {" a ":" b "}'データ '["a"]を入力すると、 'b';を出力します;) – MRH

関連する問題