0

在调用简单的 Web 服务方法时,我在表中没有得到任何数据。我试图使用 datatble 插件将服务器端返回的数据放入 jquery 数据表中。但它没有给我表格标题的表格中的数据。webservice 方法正在返回 Json 数据,但还添加了一个字符串标签,所以我不确定它是否完全是 Json。可能这可能是问题。我对此很陌生,一直在服务器端工作。在我的工作中,我经常处理 C# 数据表,所以我只需要序列化数据表,而且大多数时候我什至不确定哪个数据库将要返回的列 所以我不能使用任何代表表结构的类文件。有没有办法解决这个问题??任何帮助深表感谢。

<script src="Scripts/jquery-3.1.1.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css" />
<script src="//cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            url: 'UserService.asmx/UserDetails',
            contentType: "application/json; charset=utf-8",
            method: 'post',
            datatype: 'json',
            success: function (data) {
                $('#tbl').dataTable({
                    data: data,
                    columns: [
                    { 'data': 'UserId' },
                    { 'data': 'UserName' },
                    { 'data': 'UserPassword' },
                    { 'data': 'RoleId' },
                    { 'data': 'Gender' },
                    { 'data': 'EmailId' },
                    { 'data': 'DateOfBirth' },
                    { 'data': 'Address' },
                    ]
                });
            },
            error: function() {
            alert('Fail!');
        }
        });
    });
</script>

我的服务器端网络服务代码是

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string UserDetails()
    {
        DataTable dt = new DataTable();
        dt.TableName = "UserDetails";
        SqlConnection conn;
        SqlCommand cmd;
        string connection = ConfigurationManager.ConnectionStrings["Connstr"].ToString();
        string command = "SELECT * FROM tbl_User";
        using (conn = new SqlConnection(connection))
        {
            cmd = new SqlCommand(command, conn);
            cmd.CommandType = CommandType.Text;
            conn.Open();
            cmd.ExecuteNonQuery();
            SqlDataAdapter da = new SqlDataAdapter(command, conn);
            da.Fill(dt);
            conn.Close();
        }                
            var js = DataTableToJSONWithJavaScriptSerializer(dt);
        return js;
    }

    public string DataTableToJSONWithJavaScriptSerializer(DataTable dt)
        {
        JavaScriptSerializer js = new JavaScriptSerializer();
        List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>();
        Dictionary<string, object> childRow;
            foreach (DataRow row in dt.Rows)
            {
                childRow = new Dictionary<string, object>();
                foreach (DataColumn col in dt.Columns)
                {
                    childRow.Add(col.ColumnName, row[col]);
                }
                parentRow.Add(childRow);
            }
        return js.Serialize(parentRow);
        }

webservice 方法的输出格式如下。

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<string xmlns="http://tempuri.org/">
[{"UserId":"XYZ","UserName":"XYX","UserPassword":"XYX@1234","RoleId":1,"Gender":"F","EmailId":"XYX@email.com","DateOfBirth":"\/Date(623874600000)\/","Address":"ABC Str. 57"},
{"UserId":"ANATR","UserName":"ANT","UserPassword":"ABC@1234","RoleId":1,"Gender":"F","EmailId":"ANT@email.com","DateOfBirth":"\/Date(-301815000000)\/","Address":"XYZ. 2222"},
{"UserId":"WOLZA","UserName":"DIS","UserPassword":"AB@1234","RoleId":2,"Gender":"M","EmailId":"DIV@email.com","DateOfBirth":"\/Date(379362600000)\/","Address":"ul. JUMP 68"}]
</string>
4

2 回答 2

1

尝试:

     success: function (data) {
         var d = JSON.parse(data.d);

            $('#tbl').dataTable({data:d, 

等等。

于 2017-03-29T01:03:17.483 回答
1

我认为

如何使用 json.net 将数据表转换为 json 字符串?可以帮助您并在序列化后,在成功回调中使用 jquery.parsejson

于 2017-03-28T09:16:21.223 回答