Невозможно получить доступ к JSON данным в Jquery - PullRequest
0 голосов
/ 02 апреля 2020

Я получаю строку JSON в качестве ответа от сервера, однако, когда я получаю доступ к объектам внутри ответа, я получаю сообщение о том, что undefined

ниже - это ajax запрос, который я делаю

$.ajax({
            url: 'somefile_url',
            type: 'POST',
            dataType: 'JSON',
            data: {param1: 'value1'},
        })
        .done(function(resp) {
            console.log(resp);
        })

это ответ, который я получаю с сервера в .done (соответственно)

type: "success"
dump: "{"page_base_url":"http://www.myblog.com/about","page_url_revision":"http://www.myblog.com/about","page_url_alternate":"http://www.myblog.com/about","page_url_shortlink":"http://www.myblog.com/about","page_url_canonical":"http://www.myblog.com/about","page_title":"About US | Blog","page_name":"About Blog","page_type":"about","page_meta_description":"this is a demp with apsotrope 's here and a double quote " here see it's easily parsed and JSON return the data","page_keywords":["my","about","us","know","better"]}"

Однако я я пытаюсь получить доступ к данным, но отображается как неопределенное.

Когда я получаю доступ к resp.type, он показывает success (это ответ от сервера), но когда я пытаюсь получить доступ к resp.dump.page_base_url или любому другому другие данные в этом объекте отображаются неопределенными

Я также пытался использовать resp.dump ["page_base_url"], но получил неопределенное сообщение.

Как получить доступ к этим данным? Пожалуйста, предложите.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Причина, по которой вы не можете получить доступ к данным, заключается в том, что, хотя он выглядит как объект, он на самом деле является строкой. Поэтому, если сервер является конечной точкой в ​​вашем контроле, я бы предложил пойти туда и изменить его так, чтобы он отправлял объект, а не строку. Вы не можете сделать resp.dump.page_base_url, потому что dump это строка. Хакерский способ выполнить то, что вы хотите, это разделить строку на основе того, что вы хотите сделать: dump.split(":");

разделит ее на двоеточие, но опять же, я рекомендую вам проверить, что не так с бэкэндом.

PS. попробуйте разобрать объект, используя JSON.parse(resp.dump)

0 голосов
/ 02 апреля 2020

Попробуйте сначала проанализировать dump значение.

$.ajax({
   url: 'somefile_url',
   type: 'POST',
   dataType: 'JSON',
   data: {param1: 'value1'},
}).done(function(resp) {
   const parsedDump = JSON.parse(resp.dump);

   /* rest of the code */
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...