jquery
  • asp.net
  • url
  • sharepoint-2010
  • pagemethods
  • 2011-05-04 34 views 4 likes 
    4

    我有一個應用程序頁面(CSS)部署在MS SharePoint 2010的頁方法調用從jQuery的到SharePoint

    _LAYOUTS文件夾,我想打電話給標有使用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,它就會起作用

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

    如何在絕對路徑中轉換我的路徑?

    +0

    [PageMethods vs UpdatePanels](http://izlooite.blogspot.com/2010/06/pagemethods-vs-updatepanels.html) – 2011-05-23 06:33:17

    回答

    6
    /_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 
    

    的..會帶你上一層文件夾。

    +0

    感謝您的回答。實際上你說的是正確的,但不幸的是不適用於我的情況。事實上,正如您可能已經知道的那樣,佈局目錄是一個虛擬目錄,它映射到SharePoint中的每個網站。此外,我的網站完全是一個網站集,它具有[http:// server/sites/xxx](http:// server/sites/xxx)的根路徑。所以我在使用'/'開始時正確使用它 – Lorenzo 2011-05-05 18:32:43

    +0

    你打算得到的URL是http:// server/sites/xxx/_Layouts ...或'http:// server/_Layouts'的結果。如果是前者,那麼我相信我的回答是有效的。爲了測試它,創建一個簡單的鏈接,它與您傳遞ajax的路徑相同,查看地址欄中結束的URL,這也是由AJAX解析的URL。我想你可能最終需要對這個URL進行一些修改。無論你是否可以做出一些假設並使用諸如'../'等之類的東西,或者使用JavaScript或代碼隱藏功能做一些更復雜的事情來獲得正確的網站根目錄。 – 2011-05-05 18:55:38

    +1

    我已經解決了使用'<%= SPContext.Current.Site.Url%>'給我的url的第一部分('http:// server/sites/xxx')。感謝您的幫助:) – Lorenzo 2011-05-06 14:22:17

    相關問題