【发布时间】:2013-11-23 07:16:09
【问题描述】:
我有一个 WCF 服务,它使用 OperationContract 返回一个简单的字符串,如下所示:
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json]
我返回字符串"error2",并且我还尝试像这样预先解析它:
return Newtonsoft.Json.JsonConvert.SerializeObject(new { result = "error2" });
在第一次尝试中(没有在服务器上解析),当我读入客户端 JSON.parse(e.response) 并访问结果时,我得到error2 而不是"error2" 字符串。
我尝试了这两个选项,但仍然无法弄清楚如何从 WCF 正确返回一个字符串并将结果(“error2”)作为 Javascript 中的客户端字符串读取。
我认为我在客户端、服务器或两者上都做错了。
我尝试了什么:
var json = JSON.parse(e.response)
alert(json.result) <-- give me error2 instead of a string
也试过这个:
服务器 (WCF)
return Newtonsoft.Json.JsonConvert.SerializeObject(new { result = "\"error2\"" });
在客户端
var json = JSON.parse(e.response);
alert(json.result);
alert(e.response);
alert((e.response).result);
分别获取:undefined、"{\"result":\"\\\"error\\\"\"}"、undefined。
试试 3
在服务器上
return "error2";
在客户端
alert(e.response); <-- "error2"
但是,当我尝试比较以下内容时:
alert(e.response === "error2")
我得到false 而不是true。我使用 PostMan chrome 插件仔细检查了结果,返回值确实是“错误 2”。
更新:我认为文本的 unicode 可能存在问题。我尝试比较两个“错误”字符串,一个是从 WCF 获得的,一个是从常规输入获得的,并在使用 Base 64 对它们进行编码时得到不同的结果。有没有办法在 utf-8 中做出 WCF 响应,所以两个字符串可以相等,因此使用 JSON 数据访问属性名称会起作用吗?
是否有控制 WCF 输出编码的选项?
【问题讨论】:
标签: javascript asp.net json wcf parsing