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

    SharePointリストを順序なしリストにロードしようとしているので、簡単な検索機能を作成できます(SharePoint検索は恐ろしいものです)。私が借りて適応しているコードは以下の通りです:jQueryでSharePoint SOAPを使用する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

    この質問は実際に私の仕事のおかげで日々の節約になりました。 –

    答えて

    4

    正しいフィールド名を参照していることを確認しましたか?

    soapEnvで定義したCAMLクエリでは、表示名ではなく、内部のという名前のフィールドを使用する必要があります。私はMetric Nameが正しくないことを保証します。おそらくMetric_x0020_Nameなどのようなものでしょう。

    どのようにフィールドの内部名を決定しますか?いくつかの方法があります。

    U2U CAML Query Builderという素晴らしいユーティリティを紹介しましょう。これは、すべてのSharePoint開発者のツールボックスにある必要があります。それを起動し、適切なリストにポイントします(サーバー上にない場合はSharePoint Webサービス経由で接続します)。これにより、フィールドの表示名を使用してCAMLクエリを作成できますが、君は。複雑なフィルタやブール論理を構築するのにも最適です。さらに、クエリを実行して即座のフィードバックを得ることができます。

    フィールド名を取得するもう1つの方法は、リストの設定に移動して、関心のあるフィールドの名前をクリックすることです。URLをチェックし、&Fieldという名前のクエリ文字列パラメータを探します。それはフィールドの内部名を明らかにするでしょう。この値は、Internet Explorerを使用している場合はURLエンコードされます(単純なonline decoderは値の解読に役立ちます)が、Firefoxを使用している場合は値がunencodedになります。

    正しいフィールド名をCAMLクエリに差し込み、別の渦を付けます。

    +1

    結果ハンドラで間違った属性名にアクセスしているようです。あなたが得るものを見るために生の結果セットをチェックしてください。私は...アラート($(this).HTML()); –

    +0

    @brian brinley:よろしくお願いします。 SharePointから正しいフィールドを尋ねることに加えて、正しく出力する必要があります。私はO.P.が 'ows_ReportName'(直感的ではない)を求めているのを見ていますが、すでに属性を調べている可能性があります。 – CBono

    +0

    ありがとうございました!私は自分の仕事用ラップトップにツールをインストールすることができませんでしたが、URL内のクエリ文字列を検索することは完全に機能しました。あなたはスターです! –

    0

    alert(xData.responseXML.xml);をResult関数に追加して、ows_ReportName属性を取得していることを確認します。

    おそらく、名前の綴りが若干異なります(大文字と小文字が区別されます)。代わりに、ows_Titleを試して、定義されたデータが返されるかどうかを確認してください。もしそうなら、あなたはXMLを戻しているだけで、返されたデータの有効な列としてReportNameを見つけることはできません。

    関連する問題