【问题标题】:ASP.NET execute WebMethod with Jquery/AJAXASP.NET 使用 Jquery/AJAX 执行 WebMethod
【发布时间】:2015-03-04 12:52:29
【问题描述】:

我有一个 WebMethod,它将执行一些 DB 搜索并在一些 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);
    }
});

和网络方法:

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 Authorized 如果我尝试使用我的完整 URL http://site/school-name/Default.aspx/BuscaEquipe 我得到一个 404。

附:我已经在另一个项目中使用了相同的方法,并且效果很好,但我无法弄清楚这个有什么问题,我认为它可能与 URl 有关,但我不确定。

【问题讨论】:

  • 您是否在您的网络方法前面包含 [WebMethod] ?
  • @ArunprasanthKV,是的,我有,但我什至无法达到方法

标签: javascript jquery asp.net ajax webmethod


【解决方案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, p限制:4, pUnidadeCE: codigoEmitente })

然后

data:requestData

【讨论】:

  • 得到一个错误:未捕获的 SyntaxError:提供给 RegExp 构造函数“BuscaEquipe”的无效标志,我正在调试,但它没有到达方法
  • 你会像这样url:'&lt;%= ResolveUrl("~/Default.aspx/BuscaEquipe") %&gt;', 更改你的ajax 帖子吗?
  • 是的,我有,我把它放在 Default.aspx 页面上以确保 ResolveUrl 可以工作
  • 我忘了在 resolveUrl 周围加上 ",现在它有点用,但我得到了 500
  • @Terkhos 看看我的更新。如果是 500 错误,那么它是带有参数名称或类型的概率。使用我提到的 JSON.stringify
猜你喜欢
  • 2012-10-28
  • 1970-01-01
  • 2011-12-07
  • 2014-07-18
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多