gpt4 book ai didi

javascript - Ajax 返回数据表总是在 asp.net 中出错

转载 作者:行者123 更新时间:2023-11-30 20:43:31 24 4
gpt4 key购买 nike

我在 datatable 中返回值列表,并且我想在 dropdownlist 中填写 ajax 函数的 success 部分。直到返回 dt 我正确地获得了所有值,但之后它进入了 error 部分。以下是我的尝试。

Ajax 函数

function getMZONEWithState(evt) {

var ddlState = $('#ContentPlaceHolder1_ddlState').val();

var ddlMaintenanceZone = $("#ddlMaintenanceZone");

ddlMaintenanceZone.empty().append('<option selected="selected" value="0" disabled = "disabled">State Loading...</option>');

$.ajax({
type: "POST",
url: "Dashboard.aspx/GetMaintZone",
data: JSON.stringify({ ddlState: ddlState }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {

},
error: function (response) {
alert('Something went wrong..!!');
}
});
}

在后面的代码中:-

[WebMethod]
public static DataTable GetMaintZone(string ddlState)
{
DataTable dt = new DataTable();
try
{
CommonDB ObjCommon = new CommonDB();
dt = ObjCommon.GetMZONE(ddlState);
return dt;
}
catch (Exception)
{
throw;
}
}

为什么它总是在 error 部分我不明白?如果我哪里出错了,请提出建议。

最佳答案

您不能像这样直接从您的[WebMethod] 返回DataTable。在发送到客户端之前,您需要将 DataTable 转换为 JSON

更改您的服务器端代码,如下所示。

        [WebMethod]
public static string GetMaintZone(string ddlState)
{
DataTable dt = new DataTable();
try
{
CommonDB ObjCommon = new CommonDB();
dt = ObjCommon.GetMZONE(ddlState);
return DataTableToJSON(dt);
}
catch (Exception)
{
throw;
}
}

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

关于javascript - Ajax 返回数据表总是在 asp.net 中出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48982067/

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