如何使用 jQuery 调用 ASP.NET Web 服务?

Posted

技术标签:

【中文标题】如何使用 jQuery 调用 ASP.NET Web 服务?【英文标题】:How to use jQuery to call an ASP.NET web service? 【发布时间】:2010-09-18 19:50:53 【问题描述】:

我正在尝试使用 jQuery 从 ASP.NET Web 服务 (SharePoint Server 2007 lists.asmx) 中获取数据,但任何对 Web 服务的调用都将真正有助于朝着这个方向迈出第一步。

【问题讨论】:

ASP.NET 服务与运行在 Tomcat 上的服务有何不同?换句话说:我认为服务器运行什么软件根本不重要。 【参考方案1】:

我将此方法用作包装器,以便我可以发送参数。同样使用方法顶部的变量可以使其以更高的比率最小化,并允许在进行多次类似调用时重用一些代码。

function InfoByDate(sDate, eDate)
    var divToBeWorkedOn = "#AjaxPlaceHolder";
    var webMethod = "http://MyWebService/Web.asmx/GetInfoByDates";
    var parameters = "'sDate':'" + sDate + "','eDate':'" + eDate + "'";

    $.ajax(
        type: "POST",
        url: webMethod,
        data: parameters,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) 
            $(divToBeWorkedOn).html(msg.d);
        ,
        error: function(e)
            $(divToBeWorkedOn).html("Unavailable");
        
    );

希望对你有帮助。

请注意,这需要 3.5 框架公开可以以这种方式使用的 JSON 网络方法。

【讨论】:

这行:“var webMethod = 'MyWebService/Web.asmx/GetInfoByDates'”是否故意缺少分号? 有没有办法实际查看错误信息?我的一直说不可用,但我需要查看实际错误,谢谢 如果您使用 firebug 或 chrome 中的控制台,只需将“e”存储在一个变量中,然后检查它。即window.ZZZ = e; @Bobby,我已按照您的回答中提到的步骤进行操作,并且可以调用 Web 服务。它在 chrome 中工作正常,但是当我在 Firefox 中尝试相同的,我得到 0 作为响应,你知道吗?谢谢 以及如何在 /Web.asmx/GetInfoByDates 上获取参数??【参考方案2】:

这是一个使用 jQuery.get 调用您的 web 服务的示例:

$.get("http://domain.com/webservice.asmx",  name: "John", time: "2pm" ,
  function(data)
    alert("Data Loaded: " + data);
  );

在上面的示例中,我们调用“webservice.asmx”,传递两个参数:名称和时间。然后,在回调函数中获取服务输出。

【讨论】:

【参考方案3】:

我不知道特定的 SharePoint Web 服务,但您可以使用 <WebMethod()>(在 VB.NET 中)装饰页面方法或 Web 服务,以确保它序列化为 JSON。您可能只需将 webservice.asmx 内部使用的方法包装在您自己的 Web 服务中。

Dave Ward 对此有 a nice walkthrough。

【讨论】:

【参考方案4】:
$.ajax(
 type: 'POST',
 url: 'data.asmx/getText',
 data: 'argInput' : 'input arg(s)',
 complete: function(xData, status) 
 $('#txt').html($(xData.responseXML).text()); // result
 
);

【讨论】:

【参考方案5】:

SPServices 是一个 jQuery 库,它抽象了 SharePoint 的 Web 服务并使它们更易于使用

SharePoint 2007 是 certified

可以找到 Lists.asmx 支持的操作列表here

示例

在此示例中,我们将获取 Announcements 列表中的所有项目,并在 tasksUL div 的项目符号列表中显示标题:

<script type="text/javascript" src="filelink/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="filelink/jquery.SPServices-0.6.2.min.js"></script>
<script language="javascript" type="text/javascript">

$(document).ready(function() 
  $().SPServices(
    operation: "GetListItems",
    async: false,
    listName: "Announcements",
    CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>",
    completefunc: function (xData, Status) 
      $(xData.responseXML).SPFilterNode("z:row").each(function() 
        var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
        $("#tasksUL").append(liHtml);
      );
    
  );
);
</script>
<ul id="tasksUL"/>

【讨论】:

【参考方案6】:

我在 jQuery AJAX and ASMX 中有一个很好的例子,关于使用 jQuery AJAX 调用和 asmx Web 服务...

为了让它返回 JSON,有一行代码需要取消注释。

【讨论】:

链接是 404 未找到。最好始终在答案中包含主要内容,以防网站所有者突然中了彩票、与妻子离婚并搬到巴哈马。【参考方案7】:

我经常将 ajaxpro 与 jQuery 一起使用。 ajaxpro 让我可以从 JavaScript 调用 .NET 函数,其余部分使用 jQuery。

【讨论】:

以上是关于如何使用 jQuery 调用 ASP.NET Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 和 ASP.NET MVC 从 AJAX 调用返回错误消息?

如何使用html和jquery通过asp.net核心api调用获取数据?

如何使用 jQuery Ajax 调用从 ASP.NET Web Api 下载 CSV 文件

如何使用 ASP.NET MVC Rest API 调用和 jQuery Ajax 下载文件

如何使用jQuery调用带有参数的asp.net asmx web服务来获取响应

如何在asp.net mvc中使用jquery ajax在方法中调用字符串