c# - 将参数传递给 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
}
我究竟做错了什么?
请帮助我,因为一个星期以来我一直在这个问题上
解决方案
尝试更换
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);
推荐阅读
- python - 层次嵌套字典创建新功能
- r - 根据最近的日期更新非缺失值
- python - 在函数中更新时python类属性不更新
- pandas - 熊猫:如何选择数据框类型为列表的列?
- laravel - 为什么调用未定义的方法 Srmklive\PayPal\Services\PayPal::setExpressCheckout()
- java - Take a number (1 to 10 length) transform it to indexes and base of this indexes retrieve the specific Strings from an array in Java
- python - 创建 PyQt6 Python 项目可执行文件
- python - 如何按包含破折号/连字符的值对字典进行排序?
- python - 每 24 小时从 MongoDB 中删除项目
- cmake - 无法使用 cmake 使用本地 SDL2 存储库正确创建 SDL2_ttf 库