JQuery Json通过Rest访问Sharepoint列表

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的数据类型.但这没效果.谢谢.

Chr*_*nes 6

假设这两个资源都是公司内部资源,并且您始终从另一个访问资源,您的Sharepoint管理员可能会尝试在Sharepoint IIS服务器上打开所谓的CORS(跨源资源共享)标头.

这将允许您的跨源调用成功完成,因为浏览器和服务器交换标头请求跨源共享.您可以在http://enable-cors.org/了解有关CORS的更多信息.

关于3nigma的答案.Jquery的crossDomain标志不起作用,因为Sharepoint服务不是设计为JSONP服务,这是Jquery在设置该标志时尝试使用的.(Sharepoint服务器必须填充数据,就像它是一个JSON文件,其中包含一个JSON对象,但我不知道如何配置它来执行此操作.)


Mat*_*att 0

您需要改为调用您自己的服务器,然后让您的服务器调用 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 数据的方法。

谢谢,

马特