Jquery DataTable将参数传递给ajax调用asp.net。无效的JSON原语

时间:2015-11-17 09:01:18

标签: jquery json datatables json.net

下面是我的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格式。但我不知道如何纠正它。

任何人都会帮忙。

2 个答案:

答案 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" }
        ]
    });
}