【问题标题】:Page Method calls from jQuery to Sharepoint从 jQuery 到 Sharepoint 的页面方法调用
【发布时间】:2011-05-04 21:42:46
【问题描述】:

我在 MS SharePoint 2010 的 _LAYOUTS 文件夹中部署了一个应用程序页面 (aspx)。

我想使用 jQuery 在标有[WebMethod] 属性的页面中调用一个方法。我在document.ready() 上使用以下代码:

$("#btnOk").click(function () {
    var theUrl = '/_layouts/MyProject/MyPage.aspx/MyMethod';
    $.ajax({
        type: "get",
        dataType: "json",
        url: theUrl,
        data: {},
        success: function (response) {
            [...]
        },
        error: function (xhr, textStatus, errorThrown) {
            [...]
        }
    });
});

不幸的是,这段代码不起作用。问题在于 URL:事实上,如果我使用这样的绝对 URL,它就可以工作

var theUrl = 'http://server/sites/xxx/_layouts/MyProject/MyPage.aspx/MyMethod';

如何将我的路径转换为绝对路径?

【问题讨论】:

    标签: jquery asp.net url sharepoint-2010 pagemethods


    【解决方案1】:
    /_layouts/MyProject/MyPage.aspx/MyMethod
    

    在你的例子中相当于:

    http://server/_layouts/MyProject/MyPage.aspx/MyMethod
    

    那是你的问题。以 / 开头表示从根开始。你应该调整这个。如果它必须是动态的,因为它可以在多个地方使用,您可能需要使用代码隐藏来注入路径或其他东西。如果始终从静态位置运行,只需修改 url。

    如果您从中运行它的页面是,例如:

    http://server/sites/xxx/Somepage.aspx
    

    那就改成

    _layouts/MyProject/MyPage.aspx/MyMethod
    

    没有斜线。

    如果您在子文件夹中,例如:

    http://server/sites/xxx/Pages/Somepage.aspx
    

    那么你可以这样做:

    ../_layouts/MyProject/MyPage.aspx/MyMethod
    

    .. 会带你进入一个文件夹。

    【讨论】:

    • 感谢您的回答。实际上,您所说的是正确的,但不幸的是不适用于我的情况。事实上,您可能已经知道,layouts 目录是一个虚拟目录,映射到 sharepoint 中的每个网站。此外,我的网站正是一个网站集,其根路径正好是http://server/sites/xxx。所以我在以/ 开头时正确使用它
    • 是您打算作为结果获得的 URL http://server/sites/xxx/_Layouts...http://server/_Layouts。如果是前者,那么我相信我的回答是有效的。要对其进行测试,请创建一个简单的链接,该链接指向您传递 ajax 的同一路径,查看地址栏中的 URL,这也是 AJAX 正在解析的 URL。我认为您最终可能需要对此网址进行一些修改。您是否可以做出一些假设并使用 ../ 之类的东西,或者使用 javascript 或代码隐藏做一些更复杂的事情来获得正确的站点根目录。
    • 我已经使用 <%= SPContext.Current.Site.Url %> 解决了这个问题,它给了我 url 的第一部分 (http://server/sites/xxx)。无论如何感谢您的帮助:)
    • 没问题。这基本上就是我所说的“你可能需要使用代码隐藏来注入路径”的意思,除了我通常不允许内联代码,所以我提到了代码隐藏。
    • 对。这就是为什么我要接受这个答案是好的和有效的。我不得不使用内联代码,因为我们的设计根本不希望使用后面的代码,主要是使用 jQuery、jTemplate 和 Validate。咻
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    相关资源
    最近更新 更多