Sitecore,jQuery ajax和WebMethod返回页面本身

时间:2012-07-02 16:46:35

标签: jquery ajax sitecore webmethod

我正在尝试使用jQuery ajax在我的应用程序中的aspx页面上调用WebMethod。我正在关注这篇文章:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

我注意到当我尝试进行ajax调用时,它给了我页面本身(myPage.aspx),而不是我的WebMethod的结果。在这一点上,我基本上直接使用上面的文章中的代码。 javascript是:

$(document).ready(function () {
// Add the page method call as an onclick handler for the div.
$("#Result").click(function () {
    $.ajax({
        type: "POST",
        url: "myPage.aspx/GetDate",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            // Replace the div's content with the page method's return.
            $("#Result").text(msg.d);
        }
    });
});
});

WebMethod的myPage.aspx代码隐藏是:

    [WebMethod]
    public static string GetDate()
    {
        return DateTime.Now.ToString();
    }

奇怪的是,我让它在一个单独的测试页面上工作,但是当我尝试将它集成到我想要使用它的实际页面时,它却没有。在搜索网站和网页时,我找不到能解决我问题的任何内容。

我正在运行Sitecore 6.5和.NET Framework 4.0版。任何人都可以帮助或提供见解吗?

3 个答案:

答案 0 :(得分:0)

我只熟悉PHP,但通常你必须在返回之前使用json_encode()你的数组。例如在php

$TestArray['d'] = "All My HTML";
echo json_encode($TestArray);

//Then in Jquery

$("#Result").html(msg.d);

并确保有一个id为Result的div ...

答案 1 :(得分:0)

通常,当请求不是POST或没有设置application/json Content-Type时,会发生这种情况。

我不熟悉Sitecore,但其他人似乎在干扰页面方法方面遇到了麻烦:How to use jquery ajax and webmethod with sitecore

答案 2 :(得分:-1)

我认为问题在于Sitecore的URL重写器将处理请求并忽略您网址的/GetDate部分。

因此,您必须将您的aspx添加到<setting name="IgnoreUrlPrefixes" />设置。