【问题标题】:Getting JSON from the Sharepoint API with $.ajax()使用 $.ajax() 从 Sharepoint API 获取 JSON
【发布时间】:2016-11-01 19:52:10
【问题描述】:

默认情况下,从 Sharepoint API 返回的数据以 XML 编码,但我希望返回 JSON。我正在使用 jquery 进行 ajax 调用。我相信这应该通过将标头与 ajax 请求一起传递来完成,例如

{ "accept": "application/json; odata=verbose" }

我尝试过两种不同的方法。

$.ajax({
    url: "url/to/web/api",
    type: "GET",
    headers: { "accept": "application/json; odata=verbose"}
})
.done(function(data) {
})

function setHeaders(xhr) {
    xhr.setRequestHeader('accept', 'application/json; odata=verbose')
}

$.ajax({
    url: "url/to/web/api",
    type: "GET",
    beforeSend: setHeaders
})
.done(function(data) {
})

这两个都返回了 XML。从邮递员拨打电话并将标头传入时,我已成功取回 JSON。有人看到我做错了什么吗?

【问题讨论】:

  • 什么Sharepoint版本?
  • 现在是 2007 年,但我使用的是 2013 年的文档。邮递员电话有效,所以我认为设置是正确的。

标签: jquery json ajax sharepoint sharepoint-2007


【解决方案1】:

根据this answer,SharePoint 2007 中没有本机 JSON 发射端点。

基于 SOAP 的 .asmx Web 服务仅发出 XML 响应。

请注意,此问题专门针对 SharePoint 2007,它仅作为本地环境提供。

【讨论】:

  • 情况可能已经改变。 Scheetz 使用“headers:”参数的第一个方法今天在 SharePoint Online 中对我来说效果很好。
  • 我现在明白了。如果你让我去,我会删除我的 cmets。
【解决方案2】:

您是否尝试将dataType 添加到您的请求中?

$.ajax({
    url: "url/to/web/api", // <-- also, you had a dot here
    type: "GET",
    headers: { "accept": "application/json; odata=verbose"}
    dataType: "json" // <-- right here
})
.done(function(data) {
})

更新:我认为你真正的问题是那个小错字(点而不是逗号)。

【讨论】:

  • 对不起。在我离开工作高峰时间之前,我正在快速输入答案(无法从虚拟桌面复制和粘贴)。我可以保证没有导致问题的语法错误。
  • 您是否尝试过将dataType 属性添加到您的ajax 请求中?
猜你喜欢
  • 2020-09-23
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 2022-01-22
相关资源
最近更新 更多