【问题标题】:Accessing webmethod with jquery使用 jquery 访问 web 方法
【发布时间】:2011-02-18 02:58:37
【问题描述】:

我目前正在使用 jquery ajax 来调用页面方法(效果很好);

$.ajax({
          type: "POST",
          url: "ArticleList.aspx/GetArticleTags",
          data: "{'articleId' : " + articleId + "}",
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          success: function (msg) {
            if (msg.hasOwnProperty("d")) { msg = msg.d; }
            var tags = JSON.parse(msg);
            //do something
          }
        });

页面方法;

  <WebMethod()>
  Public Shared Function GetArticleTags(ByVal articleId As Integer) As String
    Using myDb As New MyRepository
      Dim js As New JavaScriptSerializer
      Dim returnString = js.Serialize((From t In myDb.GetArticleTags(articleId) Select t.TagId, t.Tag).ToList)
      Return returnString
    End Using
  End Function

我现在处于需要从多个页面访问我的 GetArticleTags 函数的位置。为了快速启动并运行它,我可以

  1. 将该函数复制到我的新 aspx 页面,并以相同的方式调用它。
  2. 继续指向原来的aspx页面。

这两个都很垃圾。

所以剩下的唯一合理的方法是调用 wcf (webget) 方法。 这意味着我不必手动将对象序列化为 json。它会为我完成的。

我的解决方案中已经有一个宁静的网络服务,但我对从我的网络应用程序调用它持谨慎态度。我宁愿所有代码都存在于我的 webapp 中,而不是依赖于将位于同一 iis 服务器上的不同应用程序池中的 web 服务。它可能需要冷启动等,我需要这个快速。

我已使用模板“支持 AJAX 的 WCF 服务”将 wcf 文件添加到我的 web 应用程序中。但是通过这样做,我将我的 webapp 与 web.config 等中的端点弄混了(我目前得到 500 个 System.ServiceModel.ServiceActivationException 异常)

所以,回到我的问题...... 调用我的函数的最佳方式是什么? (我认为它必须是我宁静的网络服务) 还有其他我没有考虑的选择吗?

非常感谢。

【问题讨论】:

    标签: vb.net ajax wcf .net-4.0 webforms


    【解决方案1】:

    您应该创建支持 AJAX 的 ASMX 服务或使用普通的 ASHX 处理程序。

    如果您制作 ASHX 处理程序,则需要自己处理解析和安全性;我推荐一个 ASMX 服务,它可以与你的页面方法非常相似。

    【讨论】:

    • 我实际上确实创建了 asmx 服务....但后来想着,并立即将其删除(这些天 wcf 总是为我赢得 asmx [但对于适当的 web 服务])。但您可能是对的,在我的情况下,这将是 最佳 解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 2013-03-30
    • 2014-09-21
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    相关资源
    最近更新 更多