0

我正在尝试使用 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 版。任何人都可以提供帮助或提供见解吗?

4

3 回答 3

0

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

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

于 2012-07-02T18:11:13.057 回答
0

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

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

//Then in Jquery

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

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

于 2012-07-02T17:23:47.380 回答
-1

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

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

于 2012-07-03T12:04:22.417 回答