不能用jquery json调用webmethod

时间:2010-09-09 19:28:57

标签: jquery ajax json webmethod

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

我将此代码用于webservice:

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

1 个答案:

答案 0 :(得分:2)

将Web Service作为网站的一部分。如果您不这样做,由于Same Origin Policy problem(请参阅参考资料),您的代码将无效。

您可以在同一站点上放置许多使用ASP.NET MVC,ASMX Web Service和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下阅读有关解决同源政策的不同方法的更多信息。阅读完之后,您将了解同源策略问题确实很复杂。您可以解决它,但在您的情况下,您并不需要将所有内容放在同一个网站上并使用相对路径。