C# 如何在DataTables jQuery插件中传递AJAX数据?
下面是我对服务器的AJAX请求。我已经从他们的官方网站上读到了如何做到这一点;但是,我不完全理解如何正确地传递C# 如何在DataTables jQuery插件中传递AJAX数据?,c#,javascript,jquery,ajax,datatables,C#,Javascript,Jquery,Ajax,Datatables,下面是我对服务器的AJAX请求。我已经从他们的官方网站上读到了如何做到这一点;但是,我不完全理解如何正确地传递数据 $('#MainContentPlaceHolder_business_return_flights').dataTable({ "ajax": { "url": "Browse.aspx/GetReturnFlights", "type": "POST",
数据
$('#MainContentPlaceHolder_business_return_flights').dataTable({
"ajax": {
"url": "Browse.aspx/GetReturnFlights",
"type": "POST",
"data": JSON.stringify({ businessClass: "true" }),
"contentType": "application/json; charset=utf-8",
"dataType": "json"
}
});
它不断返回以下错误:
{"Message":"Invalid JSON primitive: %7B\u00261=%22\u00262=b\u00263=u\u00264=s\u00265=i\u00266=n\u00267=e\u00268=s\u00269=s\u002610=C\u002611=l\u002612=a\u002613=s\u002614=s\u002615=%22\u002616=%3A\u002617=%22\u002618=t\u002619=r\u002620=u\u002621=e\u002622=%22\u002623=%7D.","StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}
我尝试从服务器端函数和AJAX调用中删除参数,效果很好。不过,我不明白如何将AJAX与之结合使用
更新:因此,我在不使用JSON.stringify()的情况下使用了它,它提供了以下信息:
{"Message":"Invalid JSON primitive: businessClass.","StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}
更新以下是代码隐藏中的方法
[WebMethod]
public static string GetReturnFlights(string businessClass)
{
listRows = new List<List<string>>();
business = new Table();
economy = new Table();
FillTable(economy, business, scheduledFlights.List);
if (businessClass.Equals("true"))
{
foreach (TableRow row in business.Rows)
{
listRow = new List<string>();
foreach (TableCell cell in row.Cells)
{
listRow.Add(cell.Text);
}
listRows.Add(listRow);
}
}
else
{
foreach (TableRow row in economy.Rows)
{
listRow = new List<string>();
foreach (TableCell cell in row.Cells)
{
listRow.Add(cell.Text);
}
listRows.Add(listRow);
}
}
field = new Dictionary<string, object>() { { "draw", "1" }, { "recordsTotal", economy.Rows.Count.ToString() }, { "recordsFiltered", economy.Rows.Count.ToString() }, { "data", listRows } };
return new JavaScriptSerializer().Serialize(field);
}
将“数据”:JSON.stringify({businessClass:“true”}),
更改为“数据”:{“businessClass:“true”},
并尝试删除它尝试删除JSON.Stringify您是否使用断点调试了您在businessClass
中获得的内容?@yaharga我编辑了答案,在businessClass
中提供了双引号。我不相信服务器代码一开始就在运行,由于错误发生在AJAX中,而不是服务器端函数中。我认为问题在于您的服务器代码不在AJAX中,请在webmethod中放置断点进行检查。在方法中放置断点。从一开始就不会跑掉。程序运行良好。
{"Message":"Invalid JSON primitive: businessClass.","StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}