【发布时间】:2017-01-06 13:59:35
【问题描述】:
我一直在为学校开发一个项目,并且在该项目中我想通过客户端调用服务器方法(C# 方法)。我发现使用 jQuery 是更好的方法之一(因为 ajax)。我让它工作了,但一周或更长时间后它突然停止工作。我认为我对方法没有太大改变,除了名称。但我似乎无法弄清楚问题所在。 (我使用调试来检查该方法是否被调用,它似乎没有调用)。
我通过 Ajax 调用 WebMethod 的代码:
function callDatabase() {
$.ajax({
type: 'POST',
url: 'Index.aspx/setGridData',
data: '{ }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert(msg);
}
});
}
我在 Stackoverflow 上找到了这段代码。
然后我用这个作为我的方法:
[WebMethod]
public static void setGridData() {
string data = "Test";
if (HttpContext.Current.Session["UserID"] != null) {
MySqlCommand command = new MySqlCommand("UPDATE userdata SET griddata = ? WHERE userid = ?;");
command.Parameters.Add(new MySqlParameter("griddata", data));
command.Parameters.Add(new MySqlParameter("userid", HttpContext.Current.Session["UserID"].ToString()));
MySqlDataReader reader = Global.SqlConnection.executeSQLCommand(command);
if (reader.RecordsAffected <= 0) {
reader.Close();
command = new MySqlCommand("INSERT INTO userdata(userid, griddata) VALUES (?, ?);");
command.Parameters.Add(new MySqlParameter("userid", HttpContext.Current.Session["UserID"].ToString()));
command.Parameters.Add(new MySqlParameter("griddata", data));
reader = Global.SqlConnection.executeSQLCommand(command);
reader.Close();
} else {
reader.Close();
}
}
}
jQuery 位于名为“JavaScript”的文件夹中,而 WebMethod 位于该文件夹之外,如果有帮助的话。
我希望有人可以帮助我。
【问题讨论】:
-
是否进入后端方法? ..如果你在后端使用会话,你不需要把 [WebMethod(EnableSession=true)]
-
还要检查后端页面的路径...(从服务器的根目录考虑)
-
@federicoscamuzzi 没有进入后端方法号。我刚试过用
[WebMethod(EnableSession = true)]的版本还是不行。 -
您能在浏览器控制台中看到任何错误吗?还要检查 ajax 调用的响应代码。是404还是别的什么。在浏览器的开发者控制台的网络标签中检查这个。
-
检查后端 uri 的路径 ..也许尝试类似:url: './Index.aspx/setGridData',
标签: jquery asp.net ajax webmethod