ajax
  • sharepoint
  • soap
  • jquery
  • 2010-11-26 137 views 3 likes 
    3

    我想加載到一個無序列表的SharePoint列表,所以我可以創建一個簡單的搜索功能(Sharepoint搜索只是可怕的)。我借和適應的代碼如下:使用SharePoint SOAP與jQuery GetListItems - 簡單但不能解決!

    $(document).ready(function() { 
         var soapEnv = 
          "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \ 
           <soapenv:Body> \ 
            <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \ 
             <listName>Metric_Audit</listName> \ 
             <viewFields> \ 
              <ViewFields> \ 
           <FieldRef Name='ReportName' /> \ 
           <FieldRef Name='Metric Name' /> \ 
              </ViewFields> \ 
             </viewFields> \ 
            </GetListItems> \ 
           </soapenv:Body> \ 
          </soapenv:Envelope>"; 
    
         $.ajax({ 
          url: "http://teamspace.intranet.group/sites/CSI/ID/DB/_vti_bin/lists.asmx", 
          type: "POST", 
          dataType: "xml", 
          data: soapEnv, 
          complete: Result, 
          contentType: "text/xml; charset=\"utf-8\"" 
         }); 
        }); 
    
    
        function Result(xData, status) { 
         $(xData.responseXML).find("z\\:row").each(function() { 
          var liHtml = "<li>" + $(this).attr("ows_ReportName") + "</li>"; 
          $("#MetricsUL").append(liHtml); 
         }); 
        } 
    }); 
    
    <ul id="MetricsUL"/> 
    

    它填充列表,因爲它應該,但所有項目的名稱爲「未定義」。我試圖刪除空格等無濟於事,當我將列表更改爲「任務」列表,它的工作原理很好。

    一直盯着AGES。任何建議,你可以建議將非常感激!我敢肯定,這是一件小事,我只是不能解決問題!

    謝謝!

    +0

    這個問題實際上救了我幾天的工作謝謝。 – 2011-05-19 21:43:46

    回答

    4

    您是否驗證了您引用了正確的字段名稱?

    您在soapEnv中定義的CAML查詢需要使用字段'內部名稱,而不是它們的顯示名稱。我保證Metric Name是不對的;它可能是類似Metric_x0020_Name或類似的東西。

    你如何確定你的字段的內部名稱?有幾種方法。

    讓我來介紹一個叫U2U CAML Query Builder的很棒的工具。這應該在每個SharePoint開發人員的工具箱中。啓動它,將它指向右側列表(如果您不在服務器上,則通過SharePoint Web服務連接),並且它將允許您使用字段的顯示名稱構建CAML查詢,但會生成正確的底層CAML您。這對於構建複雜的過濾器和布爾邏輯也非常有用,它還允許您運行查詢並獲得即時反饋。

    獲取字段名稱的另一種方法是導航到列表設置,然後單擊您感興趣的字段的名稱。查看您的URL並查找名爲&Field的查詢字符串參數;它會泄露該字段的內部名稱。如果您使用的是Internet Explorer,則此值爲URL編碼(簡單的online decoder可幫助解密值),但如果您使用Firefox,則會看到未編碼的值。

    將正確的字段名稱插入到您的CAML查詢中,並給它另一個旋轉。

    +1

    肯定聽起來像你正在訪問結果處理程序中錯誤的屬性名稱。檢查原始結果集,看看你得到了什麼。 I.e ... Alert($(this).HTML()); – 2010-11-28 22:07:04

    0

    在結果函數上,添加alert(xData.responseXML.xml);以確保獲得ows_ReportName屬性。

    也許它的名字拼寫略有不同(它們區分大小寫)。或者,請嘗試ows_Title以查看它是否返回已定義的數據。如果是這樣,那麼您將得到XML,它只是無法在返回的數據中找到ReportName作爲有效列。

    相關問題