SharePoint 托管应用 REST API
SharePoint hosted app REST API
所以,我一直在浏览我能找到的所有资源,尝试了几乎所有我能在此处找到的代码,并使用了 Microsoft 文档。我不知道我做错了。我正在尝试使用 REST 在名为 Schedule Orders 的列表中更新名为 DispatchStatus 的字段,但无论我尝试什么,我要么在成功函数中得到一个未定义的结果,该字段没有被更新,要么我得到
{"readyState":4,"responseText":"404 NOT FOUND","statusText":"NOT FOUND"}
返回错误。
这是我使用的代码:
function updateDelivery(id) {
var url = "_api/web/lists/GetByTitle('Scheduled Orders')/items(" + id + ")"
var itemMetadata = {
'__metadata': {
'type': getListItemType('Scheduled Orders')
},
'DispatchStatus': document.getElementById(id).value
};
updateL(url, itemMetadata, checkresult);
}
function updateItem(url, itemMetadata, callback) {
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + url,
data: JSON.stringify(itemMetadata),
type: 'POST',
contentType: 'application/json;odata=verbose',
headers: {
'X-HTTP-Method': 'MERGE',
'X-RequestDigest': $("#__REQUESTDIGEST").val(),
'Accept': 'application/json;odata=verbose',
'IF-MATCH': '*'
},
success: function (data) {
callback(data);
},
error: function (error) {
alert(JSON.stringify(error));
}
});
}
function getListItemType(name) {
var ret = "";
var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + name + "')?$select=ListItemEntityTypeFullName"
$.ajax({
url: url,
method: "GET",
async: false,
headers: {
"Accept": "application/json; odata=verbose"
},
success: function (data) {
ret = data.d.ListItemEntityTypeFullName
},
error: function (error) {
alert(JSON.stringify(error));
}
});
return ret;
}
这看起来应该是一项简单的任务,我是否缺少所需的数据?我需要复制项目中所有以前的数据吗?还是我需要以不同的方式更新列表项?
我明白了。事实证明它一直在工作,但 IE 显然在识别
时遇到问题
var a = b = c = d = "";
取代了
var a = "";
var b = "";
var c = "";
var d = "";
所以在 IE 中,这是我必须为其开发的浏览器,它看起来不起作用,因为正在更新的值没有被拾取。当我查看 Chrome 中的应用程序并注意到一切正常时,我意识到这不是我的 REST 调用,而是浏览器的问题。我找到了它,现在它终于可以在 IE 中运行了。 IE 导致中断的另一件事,但所有其他浏览器上的其他一切都运行良好。我想知道为什么除了 var c
在 IE 中其他一切都工作正常。对于我的一生,我无法弄清楚为什么只有那个变量无法以某种方式赋值并且只能在 IE 中赋值?
所以,我一直在浏览我能找到的所有资源,尝试了几乎所有我能在此处找到的代码,并使用了 Microsoft 文档。我不知道我做错了。我正在尝试使用 REST 在名为 Schedule Orders 的列表中更新名为 DispatchStatus 的字段,但无论我尝试什么,我要么在成功函数中得到一个未定义的结果,该字段没有被更新,要么我得到
{"readyState":4,"responseText":"404 NOT FOUND","statusText":"NOT FOUND"}
返回错误。
这是我使用的代码:
function updateDelivery(id) {
var url = "_api/web/lists/GetByTitle('Scheduled Orders')/items(" + id + ")"
var itemMetadata = {
'__metadata': {
'type': getListItemType('Scheduled Orders')
},
'DispatchStatus': document.getElementById(id).value
};
updateL(url, itemMetadata, checkresult);
}
function updateItem(url, itemMetadata, callback) {
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + url,
data: JSON.stringify(itemMetadata),
type: 'POST',
contentType: 'application/json;odata=verbose',
headers: {
'X-HTTP-Method': 'MERGE',
'X-RequestDigest': $("#__REQUESTDIGEST").val(),
'Accept': 'application/json;odata=verbose',
'IF-MATCH': '*'
},
success: function (data) {
callback(data);
},
error: function (error) {
alert(JSON.stringify(error));
}
});
}
function getListItemType(name) {
var ret = "";
var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + name + "')?$select=ListItemEntityTypeFullName"
$.ajax({
url: url,
method: "GET",
async: false,
headers: {
"Accept": "application/json; odata=verbose"
},
success: function (data) {
ret = data.d.ListItemEntityTypeFullName
},
error: function (error) {
alert(JSON.stringify(error));
}
});
return ret;
}
这看起来应该是一项简单的任务,我是否缺少所需的数据?我需要复制项目中所有以前的数据吗?还是我需要以不同的方式更新列表项?
我明白了。事实证明它一直在工作,但 IE 显然在识别
时遇到问题var a = b = c = d = "";
取代了
var a = "";
var b = "";
var c = "";
var d = "";
所以在 IE 中,这是我必须为其开发的浏览器,它看起来不起作用,因为正在更新的值没有被拾取。当我查看 Chrome 中的应用程序并注意到一切正常时,我意识到这不是我的 REST 调用,而是浏览器的问题。我找到了它,现在它终于可以在 IE 中运行了。 IE 导致中断的另一件事,但所有其他浏览器上的其他一切都运行良好。我想知道为什么除了 var c
在 IE 中其他一切都工作正常。对于我的一生,我无法弄清楚为什么只有那个变量无法以某种方式赋值并且只能在 IE 中赋值?