使用Jquery从SharePoint 2010站点获取列表数据

时间:2011-07-08 22:21:51

标签: javascript jquery soap sharepoint-2010

我正在尝试使用JQuery从sharepoint站点获取列表数据,但还没有返回任何内容,firebug中也没有错误。有什么问题的线索?

<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/'> \
                    <listName>Action Items</listName> \
                    <viewFields> \
                        <ViewFields> \
                           <FieldRef Name='Title' /> \
                       </ViewFields> \
                    </viewFields> \
                </GetListItems> \
            </soapenv:Body> \
        </soapenv:Envelope>";

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

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

5 个答案:

答案 0 :(得分:4)

在你的行之后

function processResult(xData, status) { 

添加如下警告:

alert(xData.responseText);

这将显示从GetListItems调用返回的内容。

另外,你应该改变这一行:

 $(xData.responseXML).find("z\\:row").

到此:

$(xData.responseXML).find("[nodeName='z:row']")

跨浏览器更可靠。 (参见我的博文:http://sympmarc.com/2009/11/08/sharepoints-web-services-jquery-and-the-zrow-namespace-in-safari-and-chrome/

正如Rob Windsor在他的回答中提到的那样,我有许多用jQuery包装的SharePoint Web服务,以便在我的SPServices jQuery library中更容易使用它们。我建议你尝试一下,因为你不需要做太多的工作。

答案 1 :(得分:2)

我强烈建议您使用客户端对象模型而不是Web服务。功能更丰富,更容易使用。

The Client Object Model and jQuery

如果您真的想使用网络服务,我建议您查看SPServices project

答案 2 :(得分:1)

您应该处理ajax success事件,而不是完整事件。完整的活动没有那个签名。

http://api.jquery.com/jQuery.ajax/

完成(jqXHR,textStatus)

成功(data,textStatus,jqXHR)

答案 3 :(得分:0)

也许你有同源政策违规。

检查运行脚本的当前网址是否以http://my_site/

开头

希望这会有所帮助。干杯

答案 4 :(得分:0)

processResult功能放在$(documnet).ready内并检查