我有一个返回此响应的网络服务:
<string xmlns="http://tempuri.org/">{ "Head":[ { "ID":"1","Name":"David"} ]}</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;
}
});
谢谢! 大卫
答案 0 :(得分:1)
您的服务器响应将类似XML的数据(<string xmlns="http://tempuri.org/">
)与JSON混合在一起。
对于使用handleAs: 'json'
处理响应的dojo,您需要服务器仅返回纯JSON数据,即
{ "Head":[ { "ID":"1","Name":"David"} ]}
如果不这样做,您需要将响应作为文本处理,删除标记然后再解析JSON内容。作为一般性提示“缺失;在声明之前”通常意味着形成错误的JSON。
修改
我刚注意到你的句柄函数的第一个参数是“错误”。 handle函数的第一个参数包含服务器的响应(在这种情况下是基于收到的JSON的javascript对象。)。