页面方法从jQuery调用到Sharepoint

Lor*_*nzo 4 asp.net url jquery pagemethods sharepoint-2010

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

我想在[WebMethod]使用jQuery 标记属性的页面内调用一个方法.我正在使用以下代码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) {
            [...]
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

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

var theUrl = 'http://server/sites/xxx/_layouts/MyProject/MyPage.aspx/MyMethod';
Run Code Online (Sandbox Code Playgroud)

我怎样才能以绝对的方式改变我的道路?

Jam*_*gne 6

/_layouts/MyProject/MyPage.aspx/MyMethod
Run Code Online (Sandbox Code Playgroud)

在您的示例中等效于:

http://server/_layouts/MyProject/MyPage.aspx/MyMethod
Run Code Online (Sandbox Code Playgroud)

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

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

http://server/sites/xxx/Somepage.aspx
Run Code Online (Sandbox Code Playgroud)

然后将其更改为

_layouts/MyProject/MyPage.aspx/MyMethod
Run Code Online (Sandbox Code Playgroud)

没有斜线.

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

http://server/sites/xxx/Pages/Somepage.aspx
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

../_layouts/MyProject/MyPage.aspx/MyMethod
Run Code Online (Sandbox Code Playgroud)

..将带你一个文件夹.