GetListItems Webservice игнорирует мой фильтр запросов - PullRequest
3 голосов
/ 07 мая 2009

Код ниже, по-видимому, выполняет веб-сервис и возвращает значения, но игнорирует предложение where (таким образом, возвращая все элементы в списке). Это самая простая форма проблемы, с которой я столкнулся.

Список TestQuery - это простой пользовательский список без пользовательских полей. Кто-нибудь может понять, почему фильтр не работает?

<body>
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(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/'>";
    soapEnv += "<listName>TestQuery</listName>";
    soapEnv += "<Query><Where><Eq><FieldRef Name='Title'/><Value Type='Text'>One</Value></Eq></Where></Query>";
    soapEnv += "<ViewFields><ViewFields><FieldRef Name='Title'/></ViewFields></ViewFields><RowLimit>1</RowLimit>";
    soapEnv += "</GetListItems></soapenv:Body></soapenv:Envelope>";

    $.ajax({
        url: "_vti_bin/lists.asmx",
        type: "POST",
        dataType: "xml",
        data: soapEnv,
        complete: processResult,
        contentType: "text/xml; charset=\"utf-8\""
    });
});

function processResult(xData, status) {
            $('#WSResponse').text(status);
    $(xData.responseXML).find("z\\:row").each(function() {
        var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
        $("#tasksUL").append(liHtml);
    });
    //}
}
</script>


<ul id="tasksUL"/>
<div id="WSResponse"/>

</body>

Ответы [ 3 ]

4 голосов
/ 07 мая 2009

Я думаю, вам нужно поместить тег Query внутри тега запроса, а ViewField - внутри тега viewField, например:

var soapEnv = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'><soapenv:Body><GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>"; 
    soapEnv += "<listName>TestQuery</listName>"; 
    soapEnv += "<query><Query><Where><Eq><FieldRef Name='Title'/><Value Type='Text'>One</Value></Eq></Where></Query></query>"; 
    soapEnv += "<viewFields><ViewFields><FieldRef Name='Title'/></ViewFields></viewFields><RowLimit>1</RowLimit>"; 
    soapEnv += "</GetListItems></soapenv:Body></soapenv:Envelope>"; 
3 голосов
/ 07 мая 2009

Вам не хватает . Форматирование этих параметров несколько нелогично.

В моем блоге есть пост с рабочим примером:

http://tqcblog.com/2007/09/24/sharepoint-blog-content-rating-with-javascript-and-web-services

2 голосов
/ 08 февраля 2011

Я также столкнулся с той же проблемой .. «Решение Temple решило проблему запроса ... но чтобы заставить работать RowLimit, я сделал строчную букву 'R', т.е.

<rowLimit> not <RowLimit>

Это отняло у меня довольно много времени ... :) Счастливого кодирования ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...