下面是我用服务器数据填充HTML表的java脚本代码,我使用Jquery DataTables来实现这一目的。
function LoadData(result) {
$('#example').DataTable({
"ajax": {
"dataType": 'json',
"contentType": "application/json; charset=utf-8",
"type": "POST",
"url": "index.aspx/Risky",
"data": function (d) {
return JSON.stringify( d )
//return JSON.stringify(result);
// d.extra_search = result;
//"extra_search": result
},
"dataSrc": function (json) {
return $.parseJSON(json.d);
}
},
"columns": [
{ "data": "Prctice_Group_Risk_No" },
{ "data": "Practice_Group" },
{ "data": "Risk_Category" },
]
});
}
下面是我的代码背后的网络方法描述
[WebMethod]
[ScriptMethod]
public static string Risky()
{
return JsonConvert.SerializeObject(riskList);
}
到目前为止,它工作得很好,我的web方法被调用,我的HTML表被填充。
但我的问题是,我想将变量"result"作为参数传递给这个ajax调用,这样我的web方法就可以接收它,并根据这个参数向我返回特定的数据。
我去过https://datatables.net/reference/option/ajax.data并尝试遵循那里描述的所有方法,通过我的ajax调用传递额外的数据,正如你在我的java脚本代码中看到的那样,三行有注释的代码,我尝试了三种不同的方法,但都不适用,这导致我在firebug调试器中遇到了一个相同的问题,"无效的JSON原语"和一个500服务器状态代码。我可以在firebug调试器中看到,传递给方法的参数是"extra_search=123"
我可以从错误描述中猜测,我添加这个额外参数的方式是不正确的,例如,不知何故,它没有生成正确的json格式。但我不知道如何纠正。
任何人都可以帮忙。
在@Sanjay Kumar NS和这个链接的帮助下
https://datatables.net/forums/discussion/24546/ajax-data-invalid-json-primitive-error
我可以解决我的问题。问题是没有有效的格式化JSON数据被发送到服务器,因此服务器抛出了"无效JSON原语"的异常
以下是从DataTable函数中发送包含额外数据的ajax调用的正确格式
function LoadData(result) {
$('#example').DataTable({
"ajax": {
"dataType": 'json',
"contentType": "application/json; charset=utf-8",
"type": "POST",
"url": "index.aspx/Risky",
"data": function (d) {
return "{FileName:" + result+ "}";
},
"dataSrc": function (json) {
return $.parseJSON(json.d);
}
},
"columns": [
{ "data": "Prctice_Group_Risk_No" },
{ "data": "Practice_Group" },
{ "data": "Risk_Category" },
]
});
}
试试这个:
function LoadData(result) {
$('#example').DataTable({
"ajax": {
"url": "index.aspx/Risky",
"data": function(d) {
d.param1 = 'param1';
}
},
"aoColumns": [
{ "data": "Prctice_Group_Risk_No" },
{ "data": "Practice_Group" },
{ "data": "Risk_Category" }
]
});
}