我正在使用C#在ASP.Net中开发一个应用程序。我的应用程序构建在三层架构中。因此存在业务逻辑层。我在名为Landing_Menus.cs的类中编写了Web方法(名为getBusinessVerticals),该类位于业务逻辑层(在App_Code文件夹下)。我必须进行AJAX调用才能获得函数的结果。我的功能代码如下(Landing_Menus.cs)
public static class Landing_Menus
{
static string sql_query = string.Empty;
static DataSet result_ds = new DataSet();
[WebMethod]
public static Struct_Business_Verticals[] getBusinessVerticals()
{
List<Struct_Business_Verticals> list_bv = new List<Struct_Business_Verticals>();
sql_query = "select * from Business_Verticals";
result_ds = DBAccess.selectQuery(sql_query);
for (int i = 0; i < result_ds.Tables[0].Rows.Count; i++)
{
Struct_Business_Verticals objBusniessVerticals = new Struct_Business_Verticals();
objBusniessVerticals.Business_Verticals_ID = Convert.ToInt32(result_ds.Tables[0].Rows[i]["Business_Verticals_ID"].ToString());
objBusniessVerticals.Business_Vertical_Type = result_ds.Tables[0].Rows[i]["Business_Vertical_Type"].ToString();
objBusniessVerticals.Business_Vertical_Description = result_ds.Tables[0].Rows[i]["Business_Vertical_Description"].ToString();
objBusniessVerticals.status = result_ds.Tables[0].Rows[i]["Status"].ToString();
list_bv.Add(objBusniessVerticals);
}
return list_bv.ToArray();
}
}
我的AJAX呼叫代码如下
$(document).ready(function () {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "App_Code/Landing_Menus.cs/getBusinessVerticals",
data: "",
dataType: "JSON",
async: true,
cache: false,
success: function (data) {
alert(JSON.stringify(data));
//for (var i = 0; i < data.d.length; i++) {
//}
},
error: function (result,d,s) {
alert(s);
}
});
});
但是它给了我一个像&#34; NetworkError:403 Forbidden - http://www.example.com/web2print/App_Code/Landing_Menus.cs/getBusinessVerticals&#34;的错误。请帮我从这里出去。我想我在AJAX URL中犯了一些错误。请相应地指导我。
答案 0 :(得分:0)
您只能在作为WebService公开的类上调用webmethods。因此,您无法通过Ajax直接调用BusinessLayer中的WebMethod。
您基本上有2个选项可以访问您的方法。
希望有所帮助。
答案 1 :(得分:0)
Web方法应该在Page.aspx.cs类中。然后你需要打电话的网址是:
Page.aspx/YourWebMethod
就像这里一样:
http://aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx
您的网址不正确,您的网络方法属于静态类,不会从Page
类继承 - 它无法正常工作。如果要调用业务层,可以在Web方法中执行此操作。
答案 2 :(得分:-1)
我的想法是在aspx页面中创建一个方法。在该方法中调用您的业务层
调用jquery方法
url:&#34; * .aspx / Newmethod&#34;,