首页 > 解决方案 > 将参数传递给 AJAX 以绑定 DataTable 不起作用

问题描述

我想为 pdf、excel、排序等使用 jQuery DataTable 插件。使用所有这些功能

我想从表中过滤记录,因为我将一些参数从客户端传递JSON>stringfy(My_Prametrs)WebMethod,并且方法过滤数据并以 JSON 格式返回客户端,但它无法与表绑定,为什么会这样?

如果我使用无参数方法,它可以按预期工作,能够绑定表

简单来说

无参数方法工作完美,但那些持有参数的方法不起作用,为什么?

阿贾克斯

function LoadTableData() {
  var params = {
    //UserName: "@xc", UserID: "@xc", Status: "InActive"
    UserName: $('#txtUserName').val(),
    UserID: $('#txtUserID').val(),
    Status: $('input[name="Status"]:checked').val()
  };
  $.ajax({
    url: 'UserService.asmx/Get_Data',
    method: 'post',
    data: JSON.stringify(params),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function(data) {
      $('#example').dataTable({
        data: data /*JSON.parse(data)*/ ,
        columns: [{
          /*My columns */
        }],
        dom: 'Bfrtip',

        buttons: [
          'copy', 'csv', 'excel', 'pdf'
        ],
        "searching": true,
        "paging": true,
        "info": true,
        "language": {
          "emptyTable": "No data available"
        },
      })
    },
    error: function(err) { // Added this event to capture the failed requests.
      console.log(err.responseText);
    }
  });

服务器端Web方法

[WebMethod]
public void Get_Data(string UserName, string UserID, string Status)
{
  DataTable dt_MobileUserLogin = FAV_VS_BLL.Search_MobileUserLogin(UserName, UserID, Status);
    List<MobileUserMaster> list = new List<MobileUserMaster>();

    foreach (DataRow dr in dt_MobileUserLogin.Rows)
    {
        list.Add(new MobileUserMaster
        {
            USER_LOGIN = dr["USER_LOGIN"].ToString(),
            USER_NAME = dr["USER_NAME"].ToString(),
            Status = dr["status"].ToString(),
            PASSWORD = dr["PASSWORD"].ToString()
        });
    }
    JavaScriptSerializer jss = new JavaScriptSerializer();
    //return jss.Serialize(list);
    Context.Response.Write(jss.Serialize(list));

}

MobileUserMastr 类

public class MobileUserMaster
    {
        public string PASSWORD { get; set; }
        public string USER_LOGIN { get; set; }
        public string USER_NAME { get; set; }
        public string Status { get; set; }
    }

我没有得到有效的JSON

我得到 JSON 之类的

[{
    "PASSWORD": "123",
    "USER_LOGIN": "@xc",
    "USER_NAME": "@xc",
    "Status": "Inactive"
}] {
    "d": null
}

我究竟做错了什么?

请帮助我,因为一个星期以来我一直在这个问题上

标签: c#jqueryasp.netajaxdatatables

解决方案


尝试更换

var params = {
    UserName: $('#txtUserName').val(),
    UserID: $('#txtUserID').val(),
    Status: $('input[name="Status"]:checked').val()
  };
  $.ajax({
    url: 'UserService.asmx/Get_Data',
    method: 'post',
    data: JSON.stringify(params),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
 success: function(data) {

var userData = {
     UserName: $('#txtUserName').val(),
    UserID: $('#txtUserID').val(),
    Status: $('input[name="Status"]:checked').val()
  };

  $.ajax({
    url: '/UserService.asmx/Get_Data',
    method: 'POST',
    data: userData,
 success: function(data) {

并尝试这个序列化:

 var jss = new JavaScriptSerializer();
  var json= jss.Serialize(list);
 context.Response.ContentType = "text/json";
context.Response.Write(json);

推荐阅读