ASP.NET使用Jquery / AJAX执行WebMethod

时间:2015-03-04 12:52:30

标签: javascript jquery asp.net ajax webmethod

我有一个WebMethod将执行某些数据库搜索并在某些HTML模板中返回它的数据。我需要使用jquery来执行此方法来填充网站的某个区域,但问题是我的网站URL / URI是动态的。

我的网址是http://site/school-name/homeschool-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);
    }
});

和WebMethod:

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 Not Notized,如果我尝试使用我的完整网址http://site/school-name/Default.aspx/BuscaEquipe,我会得到404.

P.S。我已经在另一个项目中使用了相同的方法,它工作正常,但我无法弄清楚这个方面有什么问题,我认为它可能与URl有关,但我不确定。

1 个答案:

答案 0 :(得分:1)

问题在于您的网址

使用ResolveClientUrl()方法

<%= ResolveUrl("~/Default.aspx/BuscaEquipe") %>

您必须在静态服务器功能之前具有[WebMethod]属性

[WebMethod]
public static string BuscaEquipe(int pIndex, int pLimite, int pUnidadeCE)
{
   //Code
}

您的数据:

var requestData = JSON.stringify({    pIndex:pIndex,    pLimite:4,    pUnidadeCE:codigoEmitente })

然后

data:requestData