JavaScript配列で返される2つの検索結果にアクセスしようとしています。
ここでそれを行う方法を確認した場合: Access / process (nested) objects, arrays or JSON で、この結果セットに基づいて試しました:
{
"responseHeader":{
"status":0,
"QTime":2,
"params":{
"facet":"false",
"fl":"id,title,friendlyurl,avatar,locpath,objectid,objecttype",
"indent":"off",
"q":"title_search:*castle*",
"wt":"json",
"defType":"lucene"
}
},
"response":{
"numFound":2,
"start":0,
"docs":[
{
"title":"castle a",
"objecttype":1,
"friendlyurl":"castle-a",
"avatar":"6_887_castle-a.JPG",
"objectid":6
},
{
"title":"castle b",
"objecttype":1,
"friendlyurl":"castle-b",
"avatar":"794_360_13j-castle-by-night.jpg",
"objectid":794
}
]
}
}
for (var i = 0, l = data.response.numFound; i < l; i++) {
console.log(data.response.docs[i].title);
console.log(data.response.docs[i].objecttype);
console.log(data.response.docs[i].friendlyurl);
}
サービスを直接呼び出すと結果が返されますが、Chrome コンソール ログにまだ data=null が表示されます。なぜそれが起こっているのですか?
ここに関連するコードがあります
$("#searchfavs").change(function () {
$.ajax({
type: "GET",
url: "/weddingservice/searchfavoritecompany/?q=" + $("#searchfavs").val(),
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
data = $.parseJSON(data);
console.log(data);
console.log(data.response);
console.log(data.response.numFound);
for (var i = 0, l = data.response.numFound; i < l; i++) {
console.log(data.response.docs[i].title);
console.log(data.response.docs[i].objecttype);
console.log(data.response.docs[i].friendlyurl);
}
}
});
$(this).parent().hide('slow');
});
結果をループするにはどうすればよいですか?