问题是您
dataType和您的
data参数格式。我刚刚在沙盒中对此进行了测试,并且可以进行以下工作:
C#
[HttpPost] public string ConvertLogInfoToXml(string jsonOfLog) { return Convert.ToString(jsonOfLog); }javascript
<input type="button" onclick="test()"/> <script type="text/javascript"> function test() { data = { prop: 1, myArray: [1, "two", 3] }; //'data' is much more complicated in my real application var jsonOfLog = JSON.stringify(data); $.ajax({ type: 'POST', dataType: 'text', url: "Home/ConvertLogInfoToXml", data: "jsonOfLog=" + jsonOfLog, success: function (returnPayload) { console && console.log("request succeeded"); }, error: function (xhr, ajaxOptions, thrownError) { console && console.log("request failed"); }, processdata: false, async: false }); } </script>请特别注意
data,在发送文本时,您需要发送一个与参数名称匹配的变量。它不是很漂亮,但是它将为您提供令人垂涎的未格式化字符串。
运行此命令时,jsonOfLog在服务器函数中如下所示:
jsonOfLog "{"prop":1,"myArray":[1,"two",3]}" stringHTTP POST标头:
Key ValueRequest POST /Home/ConvertLogInfoToXml HTTP/1.1Accept text/plain, */*; q=0.01Content-Type application/x-www-form-urlenpred; charset=UTF-8X-Requested-With XMLHttpRequestReferer http://localhost:50189/Accept-Language en-USAccept-Encoding gzip, deflateUser-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)Host localhost:50189Content-Length 42DNT 1Connection Keep-AliveCache-Control no-cachecookie EnableSSOUser=admin
HTTP POST正文:
jsonOfLog={"prop":1,"myArray":[1,"two",3]}响应头:
Key ValueCache-Control privateContent-Type text/html; charset=utf-8Date Fri, 28 Jun 2013 18:49:24 GMTResponse HTTP/1.1 200 OKServer Microsoft-IIS/8.0X-AspNet-Version 4.0.30319X-AspNetMvc-Version 4.0X-Powered-By ASP.NETX-SourceFiles =?UTF-8?B?XFxwc2ZcaG9tZVxkb2N1bWVudHNcdmlzdWFsIHN0dWRpbyAyMDEyXFByb2plY3RzXE12YzRQbGF5Z3JvdW5kXE12YzRQbGF5Z3JvdW5kXEhvbWVcQ29udmVydExvZ0luZm9Ub1htbA==?=
响应主体:
{"prop":1,"myArray":[1,"two",3]}


