下面是我的java脚本代码,用服务器数据填充我的HTML表格,我正在使用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脚本代码中看到三行注释代码,我试过这三个不同的方式,但没有一个对我有用,导致我遇到一个相同的问题,“无效的JSON原语”在我的firebug调试器中有500个服务器状态代码。我可以在我的firebug调试器中看到传递给方法的参数是“extra_search = 123”
我可以从错误描述中猜出我添加这个额外参数的方式是不正确的,例如某种方式它不能生成正确的json格式。但我不知道如何纠正它。
任何人都会帮忙。
答案 0 :(得分:2)
在@Sanjay Kumar N S的帮助下和这个链接
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" },
]
});
}
答案 1 :(得分:0)
试试这个:
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" }
]
});
}