我在一个类库中定义了一个WebMethod方法,我想在aspx页面中访问它。
我有一个类库项目,在其中创建了一个继承System.UI.Page的类,此新类具有一个称为(“ GetUsername”)的web方法。现在,我在Web项目中引用了该库,并且在default.aspx.cs中,我继承了新类(我在类库中上面创建的类)。现在,在aspx中,我编写了一个ajax函数来访问数据库中的数据,但是它为404的ajax url参数引发错误。
这是我的整个代码结构:
1。类库:
[ScriptService]
public class WebMethodLibrary : Page
{
[WebMethod]
public static object GetCurrentUserName()
{
Alistar.Data.AlistarDataContext db = new Alistar.Data.AlistarDataContext();
Guid gUser = new Guid("8FEF8333-F1AE-4E9E-95F9-07316CE39F73");
var user = db.Users.Find(gUser);
return new { Username = user.Username };
}
}
2。网页后面的代码:
public partial class _default : WebMethodLibrary
{
}
3。带Ajax调用的aspx页面:
$.ajax({
url: 'GetCurrentUserName',
dataType: 'json',
type: 'post',
contentType: 'application/json',
data: {},
processData: false,
success: function (data, textStatus, jQxhr) {
alert(JSON.stringify(data));
},
error: function (jqXhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});
任何人都可以指出问题所在吗?
答案 0 :(得分:1)
我认为您必须在url中的方法名称之前指定aspx页面的名称您已经提到页面的名称为default.aspx(如果位于根目录中),因此调用将类似于以下内容,或者必须在名称前加上页面名称前的目录。
$.ajax({
url: '~/default.aspx/GetCurrentUserName',
dataType: 'json',
type: 'post',
contentType: 'application/json',
data: {},
processData: false,
success: function (data, textStatus, jQxhr) {
alert(JSON.stringify(data));
},
error: function (jqXhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});