【发布时间】: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 调用中调用它。
标签: c# jquery mysql asp.net webmethod