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

如何使用jQuery调用ASP.NET web服务?,asp.net,jquery,web-services,Asp.net,Jquery,Web Services,我正试图使用jQuery从ASP.NET web服务(SharePoint Server 2007 lists.asmx)获取数据,但任何对web服务的调用都将真正有助于这一方向的第一步。以下是使用jQuery.get调用web服务的示例: $.get("http://domain.com/webservice.asmx", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data);

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

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

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

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

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


Dave Ward对此有自己的见解。

我经常在jQuery中使用ajaxpro。ajaxpro允许我从JavaScript调用.NET函数,其余部分使用jQuery。

我有一个很好的例子,说明如何将jQuery AJAX调用与asmx web服务结合使用


有一行代码需要取消注释才能返回JSON。

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

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 webmethods。

是一个jQuery库,它对SharePoint的Web服务进行了抽象,使其更易于使用

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

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

例子 在本例中,我们将捕获公告列表中的所有项目,并在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"/>

$(文档).ready(函数(){
$().SPServices({
操作:“GetListItems”,
async:false,
列表名称:“公告”,
CAMLViewFields:“”,
completefunc:函数(扩展数据、状态){
$(扩展数据.responseXML).SPFilterNode(“z:row”).each(函数(){
var liHtml=“
  • ”+$(this.attr(“ows_Title”)+“
  • ”; $(“#tasksUL”).append(liHtml); }); } }); });
    ASP.NET服务与运行在Tomcat上的服务有何不同?换句话说:我认为服务器运行的是什么软件根本不重要。这句话是不是:“var webMethod=''”故意漏掉了一个分号?有没有办法实际查看错误消息?我的一直说不可用,但我需要查看实际错误,谢谢如果您使用firebug或chrome中的控制台,只需在变量中存储“e”,然后检查它。i、 e.window.ZZZ=e@鲍比,我已经按照你回答中提到的步骤做了,我可以打电话给网络服务。它在chrome中运行良好,但当我在firefox中尝试相同的一个时,我得到了0的响应,你知道吗?谢谢,如何在/Web.asmx/GetInfoByDates?链接中获取参数?未找到404。这是一个好主意,总是包括在答案的主要内容,以防网站所有者突然赢得彩票,离婚,他的妻子,并搬到巴哈马群岛。