对于WCF来说是非常新的,除了从JQuery到WCF的帖子之外几乎一切正常。
Jquery正在处理DynaTree并将数据发布到WCF服务。 到现在为止还挺好。
当我调试时,我发现在WCF例程中作为Stream接收的发布数据是原始格式并包含HTML字符%...
我期待帖子以Json格式发送数据,但不清楚问题出在哪里。 事实上,我不得不在Post动作中注释掉内容类型,因为它会产生一个错误,说明预期会有RAW格式。
WCR URL请求有点像localhost / TS.svc / SaveTree / New?username = thisuser
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "SaveTree/New",
BodyStyle = WebMessageBodyStyle.Wrapped)]
public List<TreeNode> SaveTree(Stream data)
{
string username = HttpContext.Current.Request.QueryString["username"] ?? string.Empty;
var jsonString = new StreamReader(data).ReadToEnd();
...}
JQuery方面:
onDrop: function(node, sourceNode, hitMode, ui, draggable) {
sourceNode.move(node, hitMode);
var dict = $("#tree").dynatree("getTree").toDict();
var postData = JSON.stringify(dict);
$.ajax({
type: "POST",
url: "TS.svc/SaveUserTree/New?userame=" + $("#hdnUserFile").val(),
//contentType: "application/json; charset=utf-8",
dataType: "json",
data: {tree:postData},
请帮忙。谢谢,
答案 0 :(得分:2)
在您移除contentType: "application/json; charset=utf-8"
后,您的内容类型现为application/x-www-form-urlencoded; charset=UTF-8
。
所以,你看到的是URL编码的JSON。要将其解码为实际的JSON,您可以使用:
var decodedJSON = HttpUtility.UrlDecode(jsonString);