mur*_*ore 8 javascript rest sharepoint jquery
我尝试通过Jquery和REST接口访问sharepoint列表.具有以下代码的站点正在运行localhost.
此代码不起作用:
$(document).ready(function() { getdata(); });
function getdata() {
alert("start");
$.ajax({
url: "http://spkerberostest.vz.ch/_vti_bin/ListData.svc/Tasks",
dataType: 'JSON',
success:function(json) { alert ("Success");
},
error:function(){
alert("Error");
}
});
};
Run Code Online (Sandbox Code Playgroud)
我收到错误消息"原始http:// localhost:59936是Acess-Control-Allow-Origin不允许的."
我不确定是什么原因.是Sharepoint需要身份验证(匿名被阻止)还是跨域调用?甚至两个?
我能做什么?我在某处读到有关JSONP的数据类型.但这没效果.谢谢.
假设这两个资源都是公司内部资源,并且您始终从另一个访问资源,您的Sharepoint管理员可能会尝试在Sharepoint IIS服务器上打开所谓的CORS(跨源资源共享)标头.
这将允许您的跨源调用成功完成,因为浏览器和服务器交换标头请求跨源共享.您可以在http://enable-cors.org/了解有关CORS的更多信息.
关于3nigma的答案.Jquery的crossDomain标志不起作用,因为Sharepoint服务不是设计为JSONP服务,这是Jquery在设置该标志时尝试使用的.(Sharepoint服务器必须填充数据,就像它是一个JSON文件,其中包含一个JSON对象,但我不知道如何配置它来执行此操作.)
您需要改为调用您自己的服务器,然后让您的服务器调用 SharePoint Server。假设您使用的是 C# 中间层,它看起来像这样:
public string getJson()
{
WebClient wc = new WebClient();
wc.Credentials = new System.Net.NetworkCredential("[user]", "[password]", "[domain]");
var url = "[some url in the 12 hive that can return json]";
var result = wc.DownloadString(url);
return result;
}
Run Code Online (Sandbox Code Playgroud)
当然,您需要添加将 json 输出回客户端的代码,但上面的代码是您获取所需 SP 数据的方法。
谢谢,
马特
| 归档时间: |
|
| 查看次数: |
11959 次 |
| 最近记录: |