Sitecore、jQueryAjax和WebMethod返回页面本身

Sitecore、jQueryAjax和WebMethod返回页面本身,jquery,ajax,sitecore,webmethod,Jquery,Ajax,Sitecore,Webmethod,我试图使用jQueryAjax在我的应用程序中的aspx页面上调用WebMethod。我关注这篇文章: 我注意到,当我尝试调用ajax时,它给我的是页面本身(myPage.aspx),而不是WebMethod的结果。在这一点上,我基本上是直接使用上述文章中的代码。javascript是: $(document).ready(function () { // Add the page method call as an onclick handler for the div. $("#Result

我试图使用jQueryAjax在我的应用程序中的aspx页面上调用WebMethod。我关注这篇文章:

我注意到,当我尝试调用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();
    }
奇怪的是,我让它在一个单独的测试页面上工作,但当我试图将它集成到我想要使用它的实际页面时,它却没有。在搜索网站和web时,我找不到任何解决问题的方法


我正在运行Sitecore 6.5和.NET Framework 4.0版。有人能提供帮助或见解吗?

我只熟悉PHP,但通常在返回之前必须对数组进行json_encode()。例如在php中

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

//Then in Jquery

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

并确保有一个id为Result…

的div,通常情况下,当请求不是POST或未设置
应用程序/json
内容类型时会发生这种情况


我不熟悉Sitecore,但其他人似乎在它干扰页面方法时遇到了麻烦:

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


因此,您必须将您的aspx添加到
设置中。

为什么不包括类似以下错误的错误函数:函数(xhr,status,error){var msg=JSON.parse(xhr.responseText);警报(msg.Message);}并查看它是否抛出任何错误,或者使用firebug检查请求和resposne@user1042031我之前查看了响应标题,它返回text/html,这是页面本身的html。我不太清楚为什么会发生这种情况。我向Sitecore提交了一份支持通知单,他们回答说这是由重写模块中的问题引起的。他们确实说它在6.5-Update 4中是不可复制的,所以升级Sitecore可以做到这一点,但我现在无法做到。我确实尝试将我的页面添加到IgnoreUrlPrefixes设置中,但没有帮助。谢谢你的回复!这不是一个选项,因为您将丢失Sitecore上下文