dojo newbie从Web服务中读取json响应

时间:2009-12-17 16:35:10

标签: json dojo

我有一个返回此响应的网络服务:

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

当我试图回复时,我不断收到错误: “丢失;在陈述之前”

我刚刚开始讨论这个问题,所以我可能做错了。

为什么回复对我不起作用?

我的dojo代码看起来像这样

    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 个答案:

答案 0 :(得分:1)

get函数正在尝试将响应解析为纯json,因为handleAs属性设置为'json';但实际上响应是一个包含一些json文本的xml文档,导致你出错。

将响应更改为纯json,如下所示:

{ "H": [ { "ID":"1","Name":"Test"} ]}

或将handleAs属性设置为'xml'并解析响应以提取json内容;然后,您可以使用dojo.fromJson解组json字符串。