0

我使用协议 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 总是给我一个错误信息,但我不知道原因。有人可以帮助我吗?

4

1 回答 1

2

应该将 Web 服务作为网站的一部分。如果您不这样做,您的代码将因为同源策略问题而无法工作(请参阅 参考资料)。

您可以在同一个站点上放置许多使用不同技术开发的应用程序,如 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。

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

于 2010-09-09T20:05:27.487 回答