c# asp.net jQuery AJAX 从 MySQL 获取数据

Posted

技术标签:

【中文标题】c# asp.net jQuery AJAX 从 MySQL 获取数据【英文标题】:c# asp.net jQuery AJAX Fetch Data From MySQL 【发布时间】:2018-10-20 08:13:06 【问题描述】:

解释想做什么。 这(版本 1.)工作正常...

Default.aspx (ver 1.)

    <script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">

    $(document).ready(function () 
        setInterval(function () 
            $("#show").load("Data.aspx")
        , 3000);
    );     
</script>     
<div id="show"></div>

Data.aspx(版本 1.)

  protected void Page_Load(object sender, EventArgs e)

    FillList();  


[WebMethod]

public void FillList()

string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    using (mysqlConnection con = new MySqlConnection(constr))
    
        using (MySqlCommand cmd = new MySqlCommand("SELECT Name,Nick FROM dbBase ORDER BY id ASC"))
        
            using (MySqlDataAdapter da = new MySqlDataAdapter())
            
                cmd.Connection = con;
                da.SelectCommand = cmd;
                using (DataTable dt = new DataTable())
                
                    da.Fill(dt);
                    GridView1.DataSource = dt;
                    GridView1.DataBind();


                
            
        
    

但是当我使用 [WebMethod].... 不工作

Default.aspx(版本 2.)

    <script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">

    $(document).ready(function () 
        setInterval(function () 
            $('#show').load()
            .$.ajax(
        url: "Data.aspx/FillList"
    ); 
        , 3000);
    );
</script>
<div id="show"></div>

在 Data.aspx 中,我删除了 FillList();来自 Page_Load。 Ajax 不会调用 void FillList()。你能看出哪里有问题吗?

【问题讨论】:

我不确定你是如何调用你的网络方法的。此外,WebMethods 需要是 webforms 中的静态方法。 看看this article。 是的,正如@GaganDeep 所说,您需要将 FillList 方法声明为静态才能从 ajax 调用中调用它。 【参考方案1】:

您的 WebMethod 需要是静态尝试...

[WebMethod]
public static void FillList()

     ...

【讨论】:

【参考方案2】:

[webmethod(true)]
public string FillList()

string str="";
DataTable dt= new DataTable();
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    using (MySqlConnection con = new MySqlConnection(constr))
    
        using (MySqlCommand cmd = new MySqlCommand("SELECT Name,Nick FROM dbBase ORDER BY id ASC"))
        
            using (MySqlDataAdapter da = new MySqlDataAdapter())
            
                cmd.Connection = con;
                da.SelectCommand = cmd;
                da.fill(dt);
            
         
      if(dt.row.count!=0 && dt!=null)
      return Newtonsoft.Json.JsonConvert.SerializeObject(dt);
      
      else
      return "";
      
    

【讨论】:

以上是关于c# asp.net jQuery AJAX 从 MySQL 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 c# ASP.Net 中使用有效的 JSON 输出创建 JSON WebService 并使用 JQuery/Ajax 进行查询

为啥我的 Jquery Ajax 调用不起作用?(Asp.net MVC C#)

jQuery 通过 Ajax 在 ASP.NET MVC C# 中调用 Action 方法

使用 Jquery Ajax 将数组传递给 asp.net C# 控制器

C# jQuery Ajax 数据表 ASP.NET Core 5 MVC

ASP.NET / JavaScript - Ajax 调用,如何?