【问题标题】:Remote call ASP.Net Web Service from jQuery Ajax从 jQuery Ajax 远程调用 ASP.Net Web 服务
【发布时间】:2011-09-27 20:29:31
【问题描述】:

我有以下问题,有一个 ASP。 NET Web Service 项目 (*.asmx),具有多个功能,是第二个项目,也是 ASP .NET,它应该使用 jQuery Ajax 调用服务(无服务引用)。 网络服务项目:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class MathService : System.Web.Services.WebService
{

    [WebMethod]
    [ScriptMethod]
    public int Add(int x, int y)
    {
        return x + y;
    }
}

<script type="text/javascript" src="Scripts/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            type: "POST",
            url: "http://localhost:47204/Services/MathService.asmx/Add",
            data: "{'x': '5', 'y': '10'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (res) {
                $("#divMathService").text(res.d);
            },
            error: function () {
                alert("ALARM!");
            }
        });
    });
</script>

这 - localhost:47204 - 托管 Web 服务项目,当我调试项目时。 我特别指出了完整的 URL,在客户端项目中使用它。 项目有效,一切正常。 项目客户端如下:

<script type="text/javascript" src="Scripts/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
       $.ajax({
            type: "POST",
            url: "http://localhost:47204/Services/MathService.asmx/Add",
            data: "{'x': '5', 'y': '10'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (res) {
                $("#divMathService").text(res.d);
            },
            error: function () {
                alert("ALARM!");
            }
        });
    });
</script>

但是这个项目没有显示任何结果,只是警告,我不明白为什么。远程呼叫权限可能有问题?

我无法附加项目,但如果有人想查看项目,可以发送到电子邮件。

【问题讨论】:

  • 您在谈论“远程呼叫”,如果这意味着服务器将托管在与您的客户端不同的域上,您的代码将无法工作;实现这一目标的唯一方法是使用 JSON-P,我认为使用 ASMX WebService 构建它会很困难(或几乎不可能)
  • 我建议使用fiddler 之类的工具来调试您的ajax 请求。您将能够看到错误的原因

标签: jquery asp.net ajax web-services


【解决方案1】:

首先尝试将您的数据格式化为有效的 json:

'{"x": 5, "y": 10}'

另外,您的方法需要知道以 json 格式发送响应:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public int Add(int x, int y)

【讨论】:

  • 谢谢大家!我使用 getJSON() 方法远程调用解决了这个问题
猜你喜欢
  • 2014-11-20
  • 2011-07-05
  • 2011-03-31
  • 2017-09-23
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
相关资源
最近更新 更多