2011-01-15 3 views
0

に私は私のサーバーからこの応答を返すよ:私は応答を解析し、私の「今夜リスト」の中にそれを表示しようとしてるのはここは、JavaScriptオブジェクト

callback({"City": "Miami", "State": "FL", "Street": "9th Street", "Name": "Big 12", "Zip": "65201", "Lat": -48.219999999999999, "Telephone": "5732168906", "Long": 32.0, "Events": "[{\"End Time\": \"2011-01-22 23:36:31\", \"Name\": \"Margaritas\", \"Start Time\": \"2011-01-22 15:36:31\"}, {\"End Time\": \"2011-01-22 19:36:39\", \"Name\": \"Dollar Bottles\", \"Start Time\": \"2011-01-22 15:36:39\"}, {\"End Time\": \"2011-01-23 23:36:31\", \"Name\": \"All You Can Drink\", \"Start Time\": \"2011-01-23 15:36:31\"}]"}) 

です。 data.Eventsでは、辞書の配列全体が画面に表示されます。

function callback(data){ 
    console.log(data); 
    $("#tonight-list").append("<li role='option' tabindex='0' class='ui-li ui-li-static ui-btn-up-c'>Starts:" + 
    data.Events + 
    "<li>"); 

しかし、私は、各要素(開始時間、終了時間、名前、など)にアクセスする方法を見つけ出すことはできません。私がdata.Events [0]を試してみると、というデータの最初の文字が私に届きます。イベント

イベントの配列で各辞書キーにアクセスするにはどうすればよいですか?私は構文を理解できません。このオブジェクト型のすべてのオプションを見ることができればうれしいです。事前に助けてくれてありがとう!

答えて

1

、あなたはこのようにそれを使用することができ、代わりに文字列のJSONレスポンスでEvents実数配列を作る:私は知っていた

var obj = JSON.parse(reponseText); 
var event = obj.Events[0]; 
alert(event["End Time"]); // hurray 

JSONレスポンス

callback({ 
    "City": "Miami", 
    "State": "FL", 
    "Street": "9th Street", 
    "Name": "Big 12", 
    "Zip": "65201", 
    "Lat": -48.219999999999999, 
    "Telephone": "5732168906", 
    "Long": 32.0, 
    "Events": [{ 
    "End Time": "2011-01-22 23:36:31", 
    "Name": "Margaritas", 
    "Start Time": "2011-01-22 15:36:31" 
    }, 
    { 
    "End Time": "2011-01-22 19:36:39", 
    "Name": "Dollar Bottles", 
    "Start Time": "2011-01-22 15:36:39" 
    }, 
    { 
    "End Time": "2011-01-23 23:36:31", 
    "Name": "All You Can Drink", 
    "Start Time": "2011-01-23 15:36:31" 
    }] 
})​; 
+0

おかげでgalambalazs!最初の行を** var obj = JSON.parse(data.Events);に変更すると、必要に応じてすべてが機能しました:) – user546459

1

JSON dude!サーバーから有効なJSONを返し、evalJSONを使用するだけです。次に、対応するキーを使用して各オブジェクトにアクセスできます。

編集:

は基本的に行い、

data.responseText.evalJSON();

+0

私はそれらの行に沿って何かが必要でした!私がdata.evalJSON()を呼び出すときはいつでも。オブジェクトにevalJSONメソッドがないことを示します。私は私のサーバとは何か違うものを返す必要がありますか? content_type = 'application/javascript; charset = utf-8 'は私が現在返すものです。 – user546459

+0

application/jsonまたはテキスト応答を返すことができます。どちらの場合でも、responseTextをレスポンスオブジェクトから取り除く必要があります。 – stevebot

関連する問題