【问题标题】:Cannot call webmethod with jquery json无法使用 jquery json 调用 webmethod
【发布时间】:2011-04-10 10:38:33
【问题描述】:

我使用协议 jsonp 来调用 web 方法。

我将此代码用于网络服务:

public class Service1 : System.Web.Services.WebService
{
    [WebMethod]
    [ScriptMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }
}

这在 Jquery 上,客户端有 jason:

        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: 'http://localhost:50837/Service1.asmx/HelloWorld',
            data: {},
            dataType: "json",

            success: function(Msg) {
                alert('success:' + Msg.d.FirstName);

            },
            error: function(xhr, textStatus, errorThrown) {
                alert("error");
            }

        });

    }

这个 Jquery 总是给我一个错误信息,但我不知道原因。 有人可以帮助我吗?

【问题讨论】:

  • alert("error") 更改为 alert(textStatus + " - " + errorThrown) 对于初学者 :)
  • 为什么你使用像'localhost:50837/Service1.asmx/HelloWorld'而不像'/Service1.asmx/HelloWorld'这样的url?如果其他网站上的 web 服务和你的 JavaScript 程序?您在当前代码中的哪些地方使用了 jsonp?
  • 我有 2 个项目,一个带有 WS,另一个带有页面 asp。我需要像这样调用 WS 'localhost:50837/Service1.asmx/HelloWorld',因为如果我输入 url: '/Service1.asmx/HelloWorld' 给我:找不到错误 404
  • 错误抛出给我未定义...我不知道为什么
  • 您应该将 Web 服务作为网站的一部分。如果您不这样做,您的代码将由于同源策略问题而无法工作(请参阅en.wikipedia.org/wiki/Same_origin_policy)。您可以在同一个站点上放置多个应用程序 ASP.NET MVC、ASPX Web 服务和 WCF 服务,它们可以很好地协同工作。这是没有更复杂的 JSONP 的唯一方法。在您的情况下,JSONP 过大。

标签: jquery ajax json webmethod


【解决方案1】:

应该将 Web 服务作为网站的一部分。如果您不这样做,您的代码将无法工作,因为Same Origin Policy problem(请参阅 )。

您可以在同一个站点上放置许多使用不同技术开发的应用程序,例如 ASP.NET MVC、ASMX Web 服务和 WCF 服务,它们可以很好地协同工作。这是没有更复杂的 JSONP 的唯一方法。在您的情况下,JSONP 过大。

你的问题和Calling simple web service (.asmx file) from AJAX and JQuery using JSON - parse error差不多。如果您需要一个有效的 Hello Wold 示例,您将找到完整代码示例的 url。

您可以在Question about making XHR requests 下阅读有关解决同源策略的不同方法的更多信息。读完之后你就会明白同源策略问题真的很复杂。您可以解决它,但在您的情况下,您并没有真正拥有它,只需将所有内容放在同一个网站上并使用相对路径即可。

【讨论】:

  • 好的,你是对的。为了解决我的问题,我在服务器端调用一个函数并调用 WS。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
相关资源
最近更新 更多