使用jquery调用c#webservice

时间:2012-01-05 20:55:41

标签: c# ajax web-services

我正在尝试创建一个Web服务,它接收数据,将其发布到数据库,然后返回结果。我知道如何编写所有这样做的C#代码,但这是我遇到问题的沟通。目前,我只是试图调用该服务并返回“Hello World”(我从简单的事情开始,因为我不知道我在做什么)......

我的Jquery:

$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "PersonService.asmx/HelloWorld",
  data: "{}",
  dataType: "json",
  success: function(msg) {
    alert("Success");
    $("#log").html(msg);
    alert(msg);
  }
});

我的网络服务:

public class PersonService : System.Web.Services.WebService
{
~

    [WebMethod(CacheDuration = CacheHelloWorldTime,
    Description="As simple as it gets - the ubiquitous Hello World.")]
    public string HelloWorld()
    {
        return "Hello World";
    }
~
}

使用chrome检查元素,然后选择Network选项卡,找到我的webservice,它显示结果是:

<?xml version="1.0" encoding="utf-8"?>
<string>Hello World</string>

因此,似乎服务执行成功,但成功函数不会触发,并且控制台中没有错误。到底是怎么回事?另外,为什么结果是XML?

我是否需要使用Web服务,或者我是否可以通过AJAX将变量发布到ASPX页面,该页面将以与表单提交相同的方式处理它?<​​/ p>

1 个答案:

答案 0 :(得分:2)

Using jQuery to Consume ASP.NET JSON Web Services » Encosia

$(document).ready(function() {
  $.ajax({
    type: "POST",
    url: "RSSReader.asmx/GetRSSReader",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      // Hide the fake progress indicator graphic.
      $('#RSSContent').removeClass('loading');

      // Insert the returned HTML into the <div>.
      $('#RSSContent').html(msg.d);
    }
  });
});

此外,您在网络服务方法上遗漏了[ScriptMethod],在服务类上遗漏了[ScriptService]

[WebService]
[ScriptService]
public class PersonService : WebService
{
    [ScriptMethod]
    [WebMethod(CacheDuration = CacheHelloWorldTime,
    Description="As simple as it gets - the ubiquitous Hello World.")]
    public string HelloWorld()
    {
        return "Hello World";
    }
}