我试图通过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}
任何帮助表示赞赏:)
答案 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 );
}
}
} );