Как я могу получить конкретные данные от JSON?
JSON:
[
{ "TotalPageCount": 66 },
{ "TotalTitleCount": 199 },
{ "Title": "cola" },
{ "Title": "elvis tom" },
{ "Title": "dvd" }
]
Код Javascript:
<script>
function updateTitlesArea() {
$.getJSON(
"/lates/json/",
null,
function(data) {
$("#titlesDiv").html("");
$("#pagesDiv").html("");
var x;
if (data.length > 0) {
for (x in data) {
$("#titlesDiv").html($("#titlesDiv").html() +
"<li><a href=\"/" + data[x].Title.replace(/ /g, '-') + "\">" + data[x].Title + "</a>" +
"</li>"
);
}
} else {
$("#titlesDiv").html("<li>no entry</li>");
}
});
}
</script>
Я пытаюсь получить {"TotalPageCount":66}
И {"TotalTitleCount":199}
из Javascript. Пожалуйста, предоставьте мне метод их получения.
Большое спасибо.
Что-то не так, я пробовал все решения, но не работал нормально. У меня есть контроль над json-форматом:
Текущий Json Builder:
if (title.Any()) { foreach (var x in title) { result.AddLast(new { Title = x.Title }); } } result.AddLast(new { TotalPageCount = totalPageCount }); result.AddLast(new { TotalTitleCount = totalTitleCount }); return Json(result.ToList(), JsonRequestBehavior.AllowGet);
Я сделал небольшое изменение в формате json, взял итоговую статистику и количество заголовков до конца json.
Текущий:
[{"Название": "kola"}, {"Название": "yilmaz ozdil"}, {"Название": "dvd"}, {"Название": "действительно безумно глубоко"}, {"Название": deptivo de la coruna "}, {" Название ":" sizi seven kisiyle sevdiginiz kisinin farkli olmasi "}, {" Название ":" kadinlarin bavul gibi canta tasimalari "}, {" Название ":" hosbuldum "}, {" Название ":" sark cibani "}, {" Title ":" mevsimler gecerken "}, {" Название ":" bir kerede kolon gibi sicmak "}, {" Название ":" gelismek "}, {" Название ":" faz ("Название": "memetq"}, {"Название": "ogrencilerin sinav kagidina dustugu ilginc notlar"}, {"Название": "cami duvarina isemek"}, {"Название": "kufurden" sonra tovbe etmek "}, {" Title ":" gida tarim ve hayvancilik bakanligi "}, {" Название ":" cevre orman ve sehircilik bakanligi "}, {" Название ":" google da nikah masasi calmak "}, {" TotalPageCount ": 9}, {" TotalTitleCount ": 199}]
С моим кодом и приведенными примерами я все равно не смог получить TotalPageCount и TotalTitleCount.
Для записи: Возможно, в следующий раз я смогу добавить дополнительные атрибуты рядом с заголовком. Поэтому я хотел бы сохранить этот формат json.
Благодарим за продвижение
Когда вы делаете x in data
вы получаете каждую клавишу объектов. Поэтому вам нужно сделать простую проверку, если это TotalPageCount
или TotalTitleCount
. Как это;
<script>
function updateTitlesArea() {
$.getJSON(
"/lates/json/",
null,
function(data) {
var x, totalPageCount, totalTitleCount;
$("#titlesDiv").html("");
$("#pagesDiv").html("");
if (data.length > 0) {
for (x in data) {
if('TotalPageCount' == x) {
totalPageCount = data[x];
continue;
}
if('TotalTitleCount' == x) {
totalTitleCount = data[x];
continue;
}
$("#titlesDiv").html($("#titlesDiv").html() +
"<li><a href=\"/" + data[x].Title.replace(/ /g, '-') + "\">" + data[x].Title + "</a>" +
"</li>"
);
}
// You can do here whatever you want with 'totalPageCount' and 'totalTitleCount'
} else {
$("#titlesDiv").html("<li>no entry</li>");
}
});
}
</script>
Вы используете jQuery правильно? Вы можете попробовать что-то вроде этого:
var prom = $.getJSON('/lates/json/'),
ar;
prom.then(function (data) { ar = data; });
После этого у вас будет массив ответов в ar. Таким образом вы сможете получить доступ к своим требуемым значениям:
ar[0].TotalPageCount
ar[1].TotalTitleCount
Я надеюсь, что это поможет вам. Удачи.
С вашим текущим форматом JSON это будет что-то вроде этого. Было бы лучше, если бы вы могли изменить формат JSON.
<script>
function updateTitlesArea() {
$.getJSON(
"/lates/json/",
null,
function(data) {
$("#titlesDiv").html('<ul></ul>'); // <li> goes inside <ul> or <ol>
$("#pagesDiv").empty();
var has_titles = false;
for(var i = 0; i < data.length; i++) {
if("Title" in data[i]) {
$("#titlesDiv ul").append(
'<li><a href="/' + data[i].Title.replace(/ /g, '-') + '">' + data[i].Title + "</a>" +
"</li>"
);
has_titles = true;
}
}
if( !has_titles ) {
$("#titlesDiv ul").html("<li>no entry</li>");
}
}
);
}
</script>
Это массив, поэтому
if (data.length > 0) {
var obj = data[0]; // array, not object
for (key in obj) {
$("#titlesDiv").html(
$("#titlesDiv").html() +
"<li><a href=\"/" + obj[key].Title.replace(/ /g, '-') + "\">" +
obj[key].Title + "</a>" +
"</li>"
);
}
for-in
для массивов и не делайте$("#titlesDiv").html($("#titlesDiv").html() +
поскольку это излишне разрушительно и неэффективно. Я не могу поверить, что Ответчики не исправляют эти паттерны.