4

Jqueryを使用してリストデータを取得しようとしています。しかし、リストからの値ではなく、リスト全体のHTMLページを取得しています。Jqueryコードは次のとおりです

<script src="../_layouts/15/SharePointProject1/Scripts/jquery-1.3.2.js"></script>
<script language = "javascript" type="text/javascript">
    function GetAnnouncementData() {
        var soapPacket = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
   <soapenv:Body> \
    <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
     <listName>Temp</listName> \
     <viewFields> \
      <ViewFields> \
        <FieldRef Name='Title' /> \
      </ViewFields> \
     </viewFields> \
    </GetListItems> \
   </soapenv:Body> \
  </soapenv:Envelope>";
        jQuery.ajax({
            url: "http://serverName/Lists/Temp/listsView.aspx",
            type: "POST",
            dataType: "xml",
            data: soapPacket,
            complete: processResult,
            contentType: "text/xml; charset=\"utf-8\""
        });
    }

    function processResult(xData, status) {
        //jQuery(xData.responseXML).find("z\\:row").each(function () {
        //    $("<li>" + $(this).attr("ows_Title") + "</li>").appendTo("#AnnouncementData");
        //});
        //alert($(this).attr("ows_Title"));
        alert(xData.responseText);
        //alert(status.toString());
        document.getElementById("tarea").value = xData.responseText;
        document.getElementById("div1").innerHTML = xData.responseText;
    }
    $(document).ready(function () {
        GetAnnouncementData();
    });
</script>

このコードは私にデータをリストしないリストページを与えています。divタグでxmlファイルを取得して、何が返されるかを確認できるようにしました。そのリストのHTMLページが返されます。
助けてください。

4

3 に答える 3

10

私にとって最良のオプションは、jsonとしてデータを受信するREST呼び出しを使用することです。これは、はるかにクリーンで使いやすいものです。

また、SharePointでのREST呼び出しはLinqを使用して行われるため、クエリを作成するときの柔軟性が高くなります。たとえば、共有ポイントの安っぽいページ付けを使用する代わりに、より適切なページ付けを行うことができます。次の項目を実行します。

var ajaxCall = $.getJSON("http://SharePointSiteUrl/_vti_bin/listdata.svc/ListName");

ajaxCall.success(function (jsonData) { callbackSuccessFunction(jsonData.d.results); });
ajaxCall.error(function () { callbackErrorFunction({ status: 'error', data: 'error message.' }); });

返されたデータは、次の形式でjsonとして受信されます。

{d: {results: [arrays of items]}

残りの呼び出しを行うためにリストの名前を知る必要がある場合は、URLを呼び出すだけです。

http://SharePointSiteUrl/_vti_bin/listdata.svc/

ここにいくつかの情報があります:http://msdn.microsoft.com/en-us/library/ff798339.aspx

お役に立てば幸いです。

于 2013-03-24T04:06:53.323 に答える
3

リストにアクセスするために指定したURLを確認しましたか。

url: "http://serverName/Lists/Temp/listsView.aspx",

このURLでローカルマシンにアクセスしている場合は、サーバー名にlocalhostを指定する必要があります。

url: "http://localhost:80/Lists/Temp/listsView.aspx",

これを使ってみて、うまくいくかどうか教えてください。

于 2013-03-30T07:24:50.583 に答える
1

古い質問ですが、答えを探している他の人を助けるために...

「jQueryを使用してリストデータを取得する」最も簡単な方法は、SharePointURLプロトコルを使用することです。XMLでリストデータを返すことができ、SOAPリクエストを作成する必要はありません。必要なのは、リストGUIDとows_属性名だけです(FireBugを使用して返されたXMLを検査します)。

以下の簡単な例は、アナウンスデータを表示します。コードをSharePointサイトの空のHTMLページに貼り付け、siteUrllistIdの値を独自の値に置き換えます。

Microsoftリファレンス:URLプロトコル

リストデータを読み取るだけでは不十分な場合は、 MarcDAndersonによるjQuery.SPServicesをご覧ください。

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">

/* Tested with WSS3,IE9,FF19 */

$(document).ready( function() {

    var siteUrl = "//london",
        listId  = "{1EC2EC89-B3DC-434D-A63E-AAEBF72E4E89}";

$.get( siteUrl + "/_vti_bin/owssvr.dll?Cmd=Display&XMLDATA=TRUE&List=" + listId, 
    function( xml ) {
        var zrow = xml.getElementsByTagName("z:row");
        for(var i=0; i<zrow.length; i++) {
            $("#table1 tbody").append( 
            "<tr><td>"
            + zrow[i].getAttribute("ows_Attachments")
            + "</td><td>"
            + zrow[i].getAttribute("ows_LinkTitle") 
            + "</td><td>" 
            + zrow[i].getAttribute("ows_Body") 
            + "</td></tr>" 
            );
        }
});
});

</script>

<table id="table1">
<caption>Announcements</caption>
<tbody></tbody>
</table>

</body>
</html>
于 2013-03-23T22:49:37.687 に答える