Не знаю, поможет ли это, но вот оно:
Примечание об устаревании: обратные вызовы jqXHR.success (), jqXHR.error () и jqXHR.complete () удалены с jQuery 3.0. Вместо этого вы можете использовать jqXHR.done (), jqXHR.fail () и jqXHR.always ().
http://api.jquery.com/jquery.ajax/
Также данные являются массивом, возможно, захватить первый объект в массиве данных [0 ] .extfile.
Я думаю, что это может быть переработано так:
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"
}).done(function(data){
if (data != null) {
$("#ImgItem").attr("src", "data:image/png;base64,'" +
data[0].extfile + "'");
}
});
}
В основном, если string
, который вы вставили, является ответом (данными), при использовании JSON.parse()
он преобразуется в массив, поэтому вы должны использовать его таким образом.
const stringResponse = "[{\"filename\":\"\",\"size\":6,\"csize\":\" 5.85 KB\",\"extfile\":\"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDA....AAAAAAAAAAAf//Z\"}]"
const parsedResponse = JSON.parse(stringResponse);
console.log(parsedResponse)
const entry = parsedResponse[0];
console.log(entry.extfile)
так что в основном вам нужно сделать:
data[0].extfile
Поскольку оператор console.log (data) возвращает:
{d: "[{"filename":"","size":6,"csize":" 5.85 KB",…AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//Z"}]"}
Данные, которые вы на самом деле пытаетесь получить, содержатся в строке JSON, содержащейся в свойстве d полученных данных. Если бы вы проанализировали строку и затем получили доступ к свойству extfile, у вас были бы ваши данные:
var actualData= JSON.parse(data.d);
var extfile = actualData[0].extfile;