Ajax Request Payload包含意外编码

时间:2017-06-29 01:23:34

标签: c# ajax datatables payload

我试图通过Ajax将变量传递给检索数据以填充DataTable。我还没有找到解释原因,但我的Ajax有效负载导致了一个奇怪的编码,其中包含%=符号以及一些随机字符。我已经使用了contentType以及我使用JSON.stringify()的方式,但是我没有纠正我遇到的意外输出。

Javascript Ajax请求:

var group = { groupId: 123456789 }
...
"ajax": {
    type: 'POST',
    url: window.SiteRootURL + 'Group/GetGroup',
    contentType: 'application/json',
    data: JSON.stringify(group),
    "error": function (xhr, error, thrown) {
         notfiy({ status: "Error", message: thrown }, 'error');
    }

控制器:

public ActionResult GetGroup(Int32 groupId)
{
    // do something
}

Ajax请求有效负载:

0=%7B&1=%22&2=g&3=r&4=o&5=u&6=p&7=A&8=r&9=t&10=i&11=f&12=a&13=c&14=t&15=I&16=d&17=%22&18=%3A&19=1&20=2&21=3&22=4&23=5&24=6&25=7&26=8&27=9&28=%7D

预期的Ajax请求有效负载:

{groupId: 123456789}

任何帮助表示赞赏:)

1 个答案:

答案 0 :(得分:0)

该问题与DataTables直接相关。在Ajax请求中,ajax.data不接受字符串。要发布JSON数据,您必须在函数中返回字符串。以下是documentation

中的示例
$('#example').dataTable( {
  "ajax": {
    "url": "data.json",
    "contentType": "application/json",
    "type": "POST",
    "data": function ( d ) {
      return JSON.stringify( d );
    }
  }
} );