gpt4 book ai didi

c# - 如何在 DataTables jQuery 插件中传递 AJAX 数据?

转载 作者:行者123 更新时间:2023-11-30 17:27:10 25 4
gpt4 key购买 nike

下面是我对服务器的 AJAX 请求。我已经从他们的官方网站上阅读了操作方法 here ;但是,我不完全理解如何正确传递 data

        $('#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"}

更新 这里是Code Behind中的方法。

    [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);
}

FillTable 方法主要用于填充表格。该方法在转换为 Web 方法之前运行良好。返回正常的 JSON。

更新:在 businessClass 周围添加双引号的结果

{"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"}

最佳答案

"data": JSON.stringify({ businessClass: "true"}), 更改为 "data": { "businessClass": "true"},并尝试一下

关于c# - 如何在 DataTables jQuery 插件中传递 AJAX 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24007470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com