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

时间:2008-10-23 16:22:58

标签: asp.net jquery web-services

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

7 个答案:

答案 0 :(得分:75)

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

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 web方法。

答案 1 :(得分:9)

以下是使用jQuery.get调用Web服务的示例:

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

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

答案 2 :(得分:3)

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

Dave Ward对此有a nice walkthrough

答案 3 :(得分:2)

$.ajax({
 type: 'POST',
 url: 'data.asmx/getText',
 data: {'argInput' : 'input arg(s)'},
 complete: function(xData, status) {
 $('#txt').html($(xData.responseXML).text()); // result
 }
});

答案 4 :(得分:1)

我在 jQuery AJAX and ASMX 中有一个关于在asmx web服务中使用jQuery AJAX调用的一个不错的例子......

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

答案 5 :(得分:1)

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

SharePoint 2007为certified

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

实施例

在此示例中,我们抓取“通知”列表中的所有项目,并在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 :(得分:0)

我经常使用ajaxpro和jQuery。 ajaxpro让我从JavaScript调用.NET函数,然后我使用jQuery。