【问题标题】:Pass C# Data Result to JavaScript Variable将 C# 数据结果传递给 JavaScript 变量
【发布时间】:2018-11-14 18:19:57
【问题描述】:

我需要将下面的 SQL 结果传递给 ASP.Net 中的 Javascript 吗?我试图在 JS 中声明这两个字段,但不能正确。如何在 JS 中得到结果?

     var Description = "<%=this.Description%>"
     var ApplicationSourceCount = "<%=this.ApplicationSourceCount%>"

用 C# 声明字符串

    public class ApplicantSourceData
    {
        public string Description { get; set; }
        public string ApplicantSourceCount { get; set; }
    }

C# WebMethod

[WebMethod]
    public List<ApplicantSourceData> GetApplicantSourceData(List<string> aData)
    {
        //SqlDataReader reader;
        List<ApplicantSourceData> GetApplicantSourceData = new List<ApplicantSourceData>();

        string connectionString = ConfigurationManager.ConnectionStrings["ATL2"].ConnectionString;
        string commandTextApplicantsByMonthCount = Properties.Queries.commandTextApplicantsByMonthCount;

        using (SqlConnection con = new SqlConnection(connectionString))
        {
            using (SqlCommand command = new SqlCommand(commandTextApplicantsByMonthCount))
            {

                command.CommandText = commandTextApplicantsByMonthCount;
                command.CommandType = CommandType.Text;
                command.Connection = con;
                con.Open();
                SqlDataReader reader = command.ExecuteReader();
                if (reader.HasRows)
                {
                    int counter = 0;
                    while (reader.Read())
                    {
                        ApplicantSourceData tsData = new ApplicantSourceData();
                        tsData.Description = reader["Description"].ToString();
                        tsData.ApplicantSourceCount = reader["ApplicantSourceCount"].ToString();
                        GetApplicantSourceData.Add(tsData);
                        counter++;
                    }
                }
            }
            return GetApplicantSourceData;
        }
    }

我尝试了以下方法,但它没有

【问题讨论】:

  • 如果您从 javascript 调用 web 方法,则将结果作为 JSON 字符串返回,然后在客户端进行解析。
  • 我该怎么做?
  • 使用 Newtonsoft.Json 或其他库将 c# 对象转换为 json。参考这个stackoverflow.com/a/42649928/795683

标签: javascript c# asp.net webmethod


【解决方案1】:

您应该从客户端调用您的 WebMethod(例如,作为 AJAX 请求)。然后,您应该让 WebMethod 使用请求的数据(例如,作为 JSON 格式的字符串)向客户端返回响应。

有几种方法可以做到这一点。首先是使用 AJAX。

例子:

C#:

[WebMethod]
public static string someWebMethod(String data) {

    // your code here
    var returnData = /* some kind of data */
    JavaScriptSerializer json = new JavaScriptSerializer();
    return json.Serialize(returnData);

}

JS(以 jQuery 为例,但您也可以在常规 JS 中执行此操作):

$.ajax({
  type: "POST",
  url: "PageName.aspx/someWebMethod",
  data: "{"data": data}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(response) {
    // Do something with the response.
  }
});

另一种选择是使用PageMethods。为此,您可以按照以下模式从您的 JS 中调用该方法:

PageMethods.someWebMethod(data);

function onSucess(result) {
    console.log(result);
}

function onError(result) {
    console.log(result);
}

我建议也多看看 ASP.NET WebMethod 文档。另外,这里有一些教程可能会有所帮助:Calling ASP.NET WebMethod using jQuery-AJAXCalling an ASP.NET C# Method (Web Method) Using JavaScript

【讨论】:

  • 我觉得我应该补充一下,我正在返回数据以便我可以在 Chart.js 中显示它,所以我不会根据字段或下拉列表拉取数据,它应该在 page_load 上理想地运行.我看到的所有教程都使用您发送的文档链接中的任一字段。
  • 您可以在页面加载时发送 AJAX 请求。服务器接收请求(即调用 WebMethod)并执行您的 SQL 命令和其他服务器端代码。然后,您可以将结果序列化为 JSON 并将它们返回给客户端。客户端在成功处理程序中从服务器获取数据。从那里您可以解析它并将其添加到您的图表中。我在上面提供的第一个示例应该演示此模式。
  • 此外,第一个链接应该显示如何执行此操作的完整示例。您只是不会在 AJAX 请求中向服务器发送任何数据。您将发送请求,服务器将执行其操作,然后您将解析结果。因此,您应该能够遵循第一个教程,但在您的原因中,您不是返回时间,而是从 SQL 查询中返回数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多