2009-05-07 34 views
3

下面的代碼似乎執行Web服務並返回值,但忽略where子句(從而返回列表中的所有項目)。這是我提出的最簡單的問題形式。GetListItems Webservice忽略我的查詢過濾器

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> 

回答

4

我認爲你需要把查詢標籤內的查詢標籤和視場標籤內的視場這樣類似:

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>"; 
2

我也面臨着同樣的問題..「天宮一號的解決方案已經解決了這個問題,查詢..但讓RowLimit工作,我所做的‘R’小寫即

<rowLimit> not <RowLimit> 

這從我身上拽了相當多的時間... :)快樂編碼...