更新: あなたの質問に対する Anthony Grist のコメントを参照してください。JSON が無効であるという事実を見逃していました。彼が回答を投稿していないので、私が取り上げます。
次の2 つの別個の配列を返しているため、JSON は無効です。
[{"v":"233","pv":"1.83","avd":"00:01:58","nv":"82.83%","br":"75.11%"},
{"v":"17","pv":"3.65","avd":"00:08:31","nv":"70.59%","br":"58.82%"},
{"v":"9","pv":"2.22","avd":"00:01:51","nv":"0.00%","br":"44.44%"}]
そしてこれ:
[{"date":"2013-02-01","visits":63},
{"date":"2013-02-02","visits":30}]
JSON ドキュメントの最上位は1 つのもの (オブジェクトまたは配列) でなければならないため、それはできません。
各配列のプロパティを持つオブジェクトを返すことができます。
{
"vdata":
[{"v":"233","pv":"1.83","avd":"00:01:58","nv":"82.83%","br":"75.11%"},
{"v":"17","pv":"3.65","avd":"00:08:31","nv":"70.59%","br":"58.82%"},
{"v":"9","pv":"2.22","avd":"00:01:51","nv":"0.00%","br":"44.44%"}
],
"datedata":
[{"date":"2013-02-01","visits":63},
{"date":"2013-02-02","visits":30}
]
}
解析後 (以下を参照)、次のようにそのデータにアクセスできます。
console.log(data.vdata[0].v); // "233"
console.log(data.datedata[0].date); // "2013-02-01"
または、2 つのスロットを持つ配列で、各スロットに配列の 1 つが含まれています。
[
[{"v":"233","pv":"1.83","avd":"00:01:58","nv":"82.83%","br":"75.11%"},
{"v":"17","pv":"3.65","avd":"00:08:31","nv":"70.59%","br":"58.82%"},
{"v":"9","pv":"2.22","avd":"00:01:51","nv":"0.00%","br":"44.44%"}
],
[{"date":"2013-02-01","visits":63},
{"date":"2013-02-02","visits":30}
]
]
解析後 (以下を参照)、次のようにそのデータにアクセスできます。
console.log(data[0][0].v); // "233"
console.log(data[1][0].date); // "2013-02-01"
個人的には、アクセスしている配列が明確なオブジェクトを使用することを好みます。
元の答え:
jQuery は JSON を解析してオブジェクトに変換しsuccess
、それを関数に渡します。これにより、他のオブジェクトと同じようにアクセスできます。あなたの場合、最上位は配列です。そう:
$.ajax({
url: url,
type: 'POST',
dataType:"json",
async: false,
success: function(data) {
// Use the line from above that suits the way
// you updated your JSON structure
}
});
補足:async: false
は推奨されておらず、いずれ削除される予定です。一般に、同期 ajax リクエストを行うことはお勧めできません。リクエスト中にブラウザの UI がロックされる傾向があります。代わりに、success
コールバックがトリガーされたときに処理を続行するようにコードを構成してください。