додзё новичок читает ответ json от веб-сервиса - PullRequest
0 голосов
/ 17 декабря 2009

У меня есть веб-сервис, который возвращает этот ответ:

<string xmlns="http://tempuri.org/">{ "Head":[ { "ID":"1","Name":"David"} ]}</string>

когда я пытаюсь получить ответ, я получаю сообщение об ошибке: "отсутствует; до выписки"

Я только начинаю вникать в это, поэтому, вероятно, делаю что-то очень неправильное.

почему ответ не работает для меня?

мой код додзё выглядит так

    var targetNode = document.getElementById("foo");

    var def = dojo.io.script.get({
        url: "http://localhost/WebData/PublicData.asmx/HelloWorld",
        timeout: 30000,
        handleAs: "json",
        preventCache: true,
        handle: function(error, ioargs) {
            var message = "";
            switch (ioargs.xhr.status) {
                case 200:
                    message = "Good request.";
                    break;
                case 404:
                    message = "The requested page was not found";
                    break;
                case 500:
                    message = "The server reported an error.";
                    break;
                case 407:
                    message = "You need to authenticate with a proxy.";
                    break;
                default:
                    message = "Unknown error.";
            }
            targetNode.innerHTML = message;
        }
    });

спасибо! Дэвид

1 Ответ

1 голос
/ 17 декабря 2009

Ответ вашего сервера смешивает XML-подобные данные (<string xmlns="http://tempuri.org/">) с JSON.

Для того, чтобы dojo обрабатывал ответ с помощью handleAs: 'json', вам потребуется, чтобы ваш сервер возвращал только чистые данные JSON, т.е. просто

{ "Head":[ { "ID":"1","Name":"David"} ]}

Если вам не нужно обрабатывать ответ как текст, уберите теги, а затем проанализируйте только содержимое JSON. В качестве общего совета «отсутствует; перед утверждением» обычно подразумевается неправильно сформированный JSON.

EDIT

Я только что заметил, что первый аргумент вашей функции-дескриптора - "ошибка". Первый аргумент функции handle содержит ответ сервера (в данном случае объект javascript, основанный на полученном JSON.).

...