Не удается получить доступ к свойству в возвращенном объекте - PullRequest
0 голосов
/ 27 мая 2011

У меня проблема с тем, что я не могу запросить возвращение моего JSON, я могу распечатать весь ответ, но вот мой ответ JSON, я вижу это только тогда, когда я получаю приглашение msgBox():

{ "Addresses" : 
    "[{ 
        Building=Megatron Skyscraper,
        BuldingId=1998,
        AccountId=2000,
        Number=007,
        Name=Megatron 
        },{
        Building=StarScream Skyscraper,
        BuldingId=1999,
        AccountId=2001,
        Number=008,
        Name=StarScream
}]"}

А вот и мой код:

function getReadyStateHandler(req)
{
    // Return an anonymous function that listens to the
    // XMLHttpRequest instance
    return function ()
    {
        // If the request's status is "complete"
        if (req.readyState == 4)
        {
            // Check that a successful server response was received
            if (req.status == 200)
            {
                msgBox("JSON Response recieved...");
                var addresses = req.responseText.toJSON();
                msgBox(req.responseText.toJSON());
            }
            else
            {
                // An HTTP problem has occurred
                alert("HTTP error: " + req.status);
            }
        }
    }
}

Я пробовал все от addresses.Address[0].City и addressess.Addresses[0].City и многих других - но это немного сбивает с толку!

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Помимо того, что в вашем ответе нет ключа City, ваш возвращаемый объект содержит только одну (неправильно сформированную) строку , а не массив объектов. Вы можете проверить это, используя http://jsonlint.com

Как вы создали ответ? Это должно выглядеть больше как:

{ "Addresses" : [{ 
        "Building":"Megatron Skyscraper",
        "BuldingId":1998,
        "AccountId":2000,
        "Number":7,
        "Name":"Megatron"
        },{
        "Building":"StarScream Skyscraper",
        "BuldingId":1999,
        "AccountId":2001,
        "Number":8,
        "Name":"StarScream"
}]}

Обновление: те ведущие нули в "Number":007 и "Number":008 могут вызывать проблемы, поскольку они будут интерпретироваться как восьмеричные значения. Я удалил их в своем ответе.

0 голосов
/ 27 мая 2011

Ваш ответ действителен, но адреса - это строка, а не массив. Кавычки не должны быть там, если они должны рассматриваться как массив. Вы могли бы немного взломать его, если хотите, и сделать

address = JSON.parse(addresses.Addresses);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...