Свойства объекта JavaScript не определены после запроса AJAX

0
задан TheAngryYorkshireman 17 January 2019 в 08:54
поделиться

2 ответа

Не знаю, поможет ли это, но вот оно:

Примечание об устаревании: обратные вызовы 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 + "'");
        }
    });
}
0
ответ дан Harry Chilinguerian 17 January 2019 в 08:54
поделиться

В основном, если 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;
0
ответ дан Harry Chilinguerian 17 January 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: