Я сделал вызов ajax, который возвратил строку json из вызова .Net JsonConvert.SerializeObject (), json автоматически анализируется в объект в браузере, но в настоящее время я не могу получить доступ к свойствам без "undefined "возвращается.
Моя текущая возвращаемая строка json (удаленная часть массива байтов):
"[{\"filename\":\"\",\"size\":6,\"csize\":\" 5.85 KB\",\"extfile\":\"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDA....AAAAAAAAAAAf//Z\"}]"
Я проверил это, и все нормально.
Мой javascript:
function GetItemImage() {
let kditem = $("#txtItem").text();
let url = GetUrl();
$.ajax({
url: url,
type: "POST",
data: JSON.stringify({
"kditem": kditem
}),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data != null) {
$("#ImgItem").attr("src", "data:image/png;base64,'" + data.extfile + "'");
}
}
});
}
Я убедился, что это определенно объект. Я попытался получить доступ к data.extfile, data ["extfile"], передать extfile в виде байтового массива, а затем получить к нему доступ, но он всегда отображается как "undefined". В отчаянии я даже пытался получить доступ к индексам, перебирать объекты и т. Д. И все еще ничего.
У меня есть ощущение, что в строке json есть проблема, которая не позволяет ей правильно конвертироваться, но я не вижу ее, так как я мало работал с json. Может ли кто-нибудь указать, где я иду не так?
Решение
Javascript анализировал ответ в объект с единственным свойством «data.d», проанализировал data.d и правильно создал объект.
function GetItemImage() {
let kditem = $("#txtItem").text();
let url = GetUrl();
$.ajax({
url: url,
type: "POST",
data: JSON.stringify({
"kditem": kditem
}),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data != null && data.d != null) {
let imgData = JSON.parse(data.d);
$("#ImgItem").attr("src", "data:image/png;base64," + imgData[0].extfile);
}
}
});
}