ASP.NET 使用 Jquery/AJAX 执行 WebMethod
ASP.NET execute WebMethod with Jquery/AJAX
我有一个 WebMethod 可以执行一些数据库搜索,return 它是一些 HTML 模板中的数据。我需要使用 jquery 执行此方法来填充网站区域,但问题是我的网站 URL/URI 是动态的。
我的 URL 是 http://site/school-name/home
。 school-name
将始终更改以指示我正在访问的学校。
到目前为止我已经完成了:
$.ajax({
type: "POST",
url: "/Default.aspx/BuscaEquipe",
data: { 'pIndex': pIndex, 'pLimite': 4, 'pUnidadeCE': codigoEmitente },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
alert(response.d);
},
failure: function(response) {
alert(response.d);
}
});
和网络方法:
public static string BuscaEquipe(int pIndex, int pLimite, int pUnidadeCE)
{
var objEquipe = new Equipe { EquipeUnidadeCE = pUnidadeCE, EquipeAtivo = 1 };
var CaminhoImagem = Configuracoes.CaminhoVirtual + "Controles/Redimensiona.ashx?img=" + Configuracoes.CaminhoVirtual + "images/equipe/" + pUnidadeCE + "/";
if (!objEquipe.Listar(objEquipe)) return "";
var depoimentos = objEquipe.lstEquipe.Skip(pIndex).Take(pLimite);
var objJson = new JavaScriptSerializer().Serialize(depoimentos.Aggregate("", (current, equipe) =>
current + ("<div class='col-lg-3 col-md-3 col-sm-3'><img src='" + CaminhoImagem + equipe.EquipeImagem + "&w=400&h=400' alt='" + equipe.EquipeNome + "' class='img-circle img_perfil'><div class='nome_perfil text-center'>" + equipe.EquipeNome + "</div></div>")));
return objJson;
}
像这样使用我得到一个 401 未授权,如果我尝试使用我的完整 URL http://site/school-name/Default.aspx/BuscaEquipe
我得到一个 404.
P.S。我已经在另一个项目中使用了同样的方法并且它工作正常但我无法弄清楚这个有什么问题,我认为它可能与 URl 有关但我不确定。
问题出在你的 URL
使用 ResolveClientUrl() 方法
<%= ResolveUrl("~/Default.aspx/BuscaEquipe") %>
并且在静态服务器函数之前必须具有 [WebMethod] 属性
[WebMethod]
public static string BuscaEquipe(int pIndex, int pLimite, int pUnidadeCE)
{
//Code
}
您的数据:
var requestData= JSON.stringify({
pIndex: p索引,
限制:4,
pUnidadeCE:codigoEmitente
})
然后是
data:requestData
我有一个 WebMethod 可以执行一些数据库搜索,return 它是一些 HTML 模板中的数据。我需要使用 jquery 执行此方法来填充网站区域,但问题是我的网站 URL/URI 是动态的。
我的 URL 是 http://site/school-name/home
。 school-name
将始终更改以指示我正在访问的学校。
到目前为止我已经完成了:
$.ajax({
type: "POST",
url: "/Default.aspx/BuscaEquipe",
data: { 'pIndex': pIndex, 'pLimite': 4, 'pUnidadeCE': codigoEmitente },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
alert(response.d);
},
failure: function(response) {
alert(response.d);
}
});
和网络方法:
public static string BuscaEquipe(int pIndex, int pLimite, int pUnidadeCE)
{
var objEquipe = new Equipe { EquipeUnidadeCE = pUnidadeCE, EquipeAtivo = 1 };
var CaminhoImagem = Configuracoes.CaminhoVirtual + "Controles/Redimensiona.ashx?img=" + Configuracoes.CaminhoVirtual + "images/equipe/" + pUnidadeCE + "/";
if (!objEquipe.Listar(objEquipe)) return "";
var depoimentos = objEquipe.lstEquipe.Skip(pIndex).Take(pLimite);
var objJson = new JavaScriptSerializer().Serialize(depoimentos.Aggregate("", (current, equipe) =>
current + ("<div class='col-lg-3 col-md-3 col-sm-3'><img src='" + CaminhoImagem + equipe.EquipeImagem + "&w=400&h=400' alt='" + equipe.EquipeNome + "' class='img-circle img_perfil'><div class='nome_perfil text-center'>" + equipe.EquipeNome + "</div></div>")));
return objJson;
}
像这样使用我得到一个 401 未授权,如果我尝试使用我的完整 URL http://site/school-name/Default.aspx/BuscaEquipe
我得到一个 404.
P.S。我已经在另一个项目中使用了同样的方法并且它工作正常但我无法弄清楚这个有什么问题,我认为它可能与 URl 有关但我不确定。
问题出在你的 URL
使用 ResolveClientUrl() 方法
<%= ResolveUrl("~/Default.aspx/BuscaEquipe") %>
并且在静态服务器函数之前必须具有 [WebMethod] 属性
[WebMethod]
public static string BuscaEquipe(int pIndex, int pLimite, int pUnidadeCE)
{
//Code
}
您的数据:
var requestData= JSON.stringify({ pIndex: p索引, 限制:4, pUnidadeCE:codigoEmitente })
然后是
data:requestData