【发布时间】:2017-11-10 01:26:56
【问题描述】:
我在 AJAX 请求中将 xml/mathml 作为数据发送,而在 C# 的服务器端,我得到了这种文本:
%3Cmath%3E%0A%20%20%20%20%3Cmrow%3E%0A%20%20%20%20%20%20%20%20%3Cmsub%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmi%3Ex%3C%2Fmi%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmtext%3E12%3C%2Fmtext%3E%0A%20%20%20%20%20%20%20%20%3C%2Fmsub%3E%0A%20%20%20%20%20%20%20%20
所以,基本上是xml,但是xml基本字符转换成url之类的字符,%20、%3E、%0A等...
我的 API 控制器中有这个 POST 方法:
[HttpPost]
public HttpResponseMessage PostUpload(HttpRequestMessage req)
{
string jsonContent = req.Content.ReadAsStringAsync().Result;
Utility.Utility.WriteLineToConsole("json data post: " + jsonContent);
return Request.CreateResponse(HttpStatusCode.OK, jsonContent);
}
实用程序函数 WriteLineToConsole() 打印结果中的 jsonContent 和顶部文本。
如何将上面的字符串转换为 xml,即将类似 url 的字符替换为 xml 字符?
注意:我使用的是 MVC 4 / C# 、jQuery AJAX,并且 contentType 和 dataType 都是 json 类型。我希望我的数据对象像
data:{mathml: "<math>...</math>"}
【问题讨论】:
-
好像是
urlencoded。试试Server.Decode(thatString);或HttpUtility.UrlDecode(thatString)或Uri.UnescapeDataString(thatString) -
似乎 contentType 没有在 ajax 调用中正确设置。检查this
-
顺便说一句,当您显然是在发送 xml 时,为什么要将它设置为 json?似乎
application/xml; charset=UTF-8更合适。 -
@Kyle,
Uri.UnescapeDataString会很好用 - dotnetfiddle.net/zLkawf。我猜甚至可以标记为stackoverflow.com/questions/12898556/… 的重复项。 -
我认为你需要使用 System.Net.WebUtility.HtmlDecode & System.Net.WebUtility.HtmlEncode。除了某些特殊字符之外,HTML 不会:en.wikipedia.org/wiki/...
标签: c# jquery ajax xml asp.net-mvc-4