我正在尝试使用我们存储在内部Sharepoint列表中的数据创建一个图表(带有amCharts)。
幸运的是,可以通过RESTful URL查询将这些列表转换为XML格式。 这些查询如下所示:
https://sharepoint/_vti_bin/owssvr.dll?Cmd=Display&List=%7B812FC713-F916-4284-B50F-2EC3B8E80C98%7D&View=%7BAAFAA130-33B1-4A21-9E98-C25FECEF79E4%7D&XMLDATA=TRUE?Cmd=Display&List=%7B812FC713-F916-4284-B50F-2EC3B8E80C98%7D&View=%7BAAFAA130-33B1-4A21-9E98-C25FECEF79E4%7D&XMLDATA=TRUE
生成的XML数据虽然没有标准的header / mime-type /等,但是就像这样:
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
...
</s:Schema>
<rs:data>
...
</rs:data>
</xml>
现在我需要做的是为了转换和使用javascript中的数据,这样我最终可以将它插入到图表中,就是能够在我的Web应用程序中解析它(html / php / plain js) )。
通常情况下我会在这种情况下执行xmlhttprequest(),但是,我已经尝试了这个并且它让我失望了。看起来它不能使用URL作为xml源。不幸的是,没有任何错误消息...
这是我使用的功能(包括调试警报):
<script type="text/javascript">
function loadXMLDoc(XMLname)
{
alert("Function loaded");
var xmlDoc;
if (window.XMLHttpRequest)
{
alert("Chrome, getting XML");
xmlDoc=new window.XMLHttpRequest();
xmlDoc.open("GET",XMLname,false);
xmlDoc.send("");
alert("Chrome, got XML");
return xmlDoc.responseXML;
}
// IE 5 and IE 6
else if (ActiveXObject("Microsoft.XMLDOM"))
{
alert("IE, getting XML");
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load(XMLname);
alert("IE, got XML");
return xmlDoc;
}
alert("Error loading document!");
return null;
}
</script>
该功能正确加载,然后正确选择Chrome / Firefox路径并开始通过&#34; GET&#34;查询。
此查询无法通过和
返回结果或错误消息alert("Chrome, got XML");
永远不会到达。
有没有人知道为什么没有错误消息或如何用javascript实际解析XML URL?
最好的问候
daZza
答案 0 :(得分:1)
我假设您使用的是SharePoint 2010.目前尚不清楚为什么要使用SharePoint Foundation RPC Protocol方法来访问SharePoint列表数据。
除RPC
外,SharePoint 2010还支持REST,JSOM或SOAP Services。
以下示例演示了如何使用SharePoint 2010 REST API读取列表项:
function getListItems(webUrl,listName, success, failure) {
var url = webUrl + "/_vti_bin/listdata.svc/" + listName;
$.ajax({
url: url,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
success(data.d.results);
},
error: function (data) {
failure(data.responseJSON.error);
}
});
}
//Usage
getListItems('https://contoso.sharepoint.com/project/','Tasks',function(taskItems){
console.log(taskItems);
for(var i = 0; i < taskItems.length;i++) {
console.log(taskItems[i].TaskName);
}
},
function(error){
console.log(JSON.stringify(error));
}
);