2012-10-22 58 views
0

我正尝试使用CAML查询从基于通过Javascript检索的“cardID”值查找SharePoint 2007列表中的项目。我可以看到该值正在分配给变量,但每当我尝试添加查询时,列表不再显示。我希望有更多经验的人能够清楚我做错了什么。CAML查询不工作 - 难倒

注意:我使用u2u CAML工具生成此查询。当我从那里执行它时,它会返回一个有效的结果,而不是当我尝试将它与jQuery结合使用时。

<script language = "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>eCards</listName> \ 
     <View> \ 
     <Query><Where> 
     <Eq> 
     <FieldRef Name='Title' /> 
     <Value Type='Text'>116</Value> 
     </Eq></Where> </Query> 
     <ViewFields> \ 
     <FieldRef Name='Title' /> \ 
     <FieldRef Name='Greeting' /> \ 
     <FieldRef Name='Message'/> \ 
     <FieldRef Name='Card' /> \ 
     </ViewFields> \ </View> \ 
    </GetListItems> \ 
    </soapenv:Body> \ </soapenv:Envelope>"; jQuery.ajax({ >url: "http://localhost/place/_vti_bin/lists.asmx", 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() { 

JSRequest.EnsureSetup(); var cardID = JSRequest.QueryString["cardID"]; 

$("<li>" + $(this).attr("ows_Title") + "</li>").appendTo("#AnnouncementData"); }); } 

$(document).ready(function(){ GetAnnouncementData(); }); </script> 

我也尝试用列表中的预定义值替换“cardID”。仍然没有结果返回。 :(

+0

感谢raina77ow – snapplex

回答

0

请使用U2U CAML制作工具,将首先测试你CAML查询: http://www.u2u.be/res/tools/camlquerybuilder.aspx

你可以使用Fiddler看到Web服务和运行JavaScript的浏览器之间的通信量使用Chrome(调试Javascript。按F12) http://www.fiddler2.com/fiddler2/

类似的代码在这里:! http://community.office365.com/en-us/forums/153/p/13711/63998.aspx

+0

我也许应该在原来的职位都提到,我用个e u2u CAML工具来生成这个查询。当我从那里执行它时,它会返回一个有效的结果,而不是当我尝试将它与jQuery结合使用时。 – snapplex

+0

使用Fiddler查看请求/响应并调试您的JavaScript。再试一次! “给一个人一条鱼,你喂他一天,教一个人钓鱼,你给他一辈子的食物”。 – sainiuc