在jQuery中使用Load函数时,无法使Web Service URL工作

时间:2012-02-06 17:48:18

标签: c# jquery web-services load asmx

我无法让这个工作!每当我点击按钮时都没有任何反应。已经用.text('hello world')替换了.load方法,它起作用,所以看起来我的问题在方法的url中。到处寻找答案,但我认为我必须忽略一些非常明显的东西,因为没有看到任何地方发布的相同的东西。请帮助它让我疯狂!!!

客户端:

    <script src="Scripts/jQuery-1.7.1.js" type="text/javascript"></script>
    <script type="text/javascript">
    // Cannot get this to work
        $(function () {
            $('#buttonSays').click(function () {
                $('div').load('AjaxServices.asmx/HelloWorld');
            });
        });
    </script>
</head>
<body>
    <h1>Hello World from Web Service</h1>
    <button type="button" id="buttonSays">Get Info</button>
    <p>The site says...</p>
    <div id="divSays1"></div>
    <div id="divSays2"></div>
    <div id="divSays3"></div>
</body>

服务器端:

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

private static int count = 0;

[WebMethod]
public string HelloWorld()
{
    count++;
    return "Hello World #" + count.ToString();
}

1 个答案:

答案 0 :(得分:2)

虽然这可能不是造成问题的原因,但是阻止.Net Web服务使用jQuery的常见问题是默认情况下不允许GETPOST请求。确保使用以下代码在web.config中启用了适当的方法:

<webServices>
    <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
    </protocols>
</webServices>

我相信你也可以指定WebMethod级别允许哪些方法:

[ScriptMethod(UseHttpGet = true)]
public string HelloWorld()
{
    count++;
    return "Hello World #" + count.ToString();
}