私は、誰かが私に次のように達成するための指針を与えることができることを期待していました。再帰的なAjaxクエリ
A JS機能:jQueryのAJAXクエリのSharePointのカスタムリストから項目を取得します
現在、私が持っています。
JS関数:リスト結果をデータテーブルに格納します。
InitatorIdをユーザーの実際の名前(GetDisplayName)に変換できるJS関数。
function GetDisplayName(userid) { var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")"; var requestHeaders = { "accept" : "application/json;odata=verbose" }; $.ajax({ url : requestUri, contentType : "application/json;odata=verbose", headers : requestHeaders, success : GetDisplayNameSuccess, error : GetDisplayNameFail }); } function populateMyOutstandingItems() { SP.SOD.executeFunc("sp.js", "SP.ClientContext", function() { SP.SOD.executeFunc("sp.runtime.js", "SP.ClientContext", function() { var context = SP.ClientContext.get_current(); var queryUrl = "https://companyname.sharepoint.com/subsite/_api/Web/Lists/getbytitle('Read%20Requests')/GetItems"; //change the Url var camlXML = "<Query><Where><And><Eq><FieldRef Name='ReaderId' LookupId='True' /><Value Type='Integer'>" + _spPageContextInfo.userId + "</Value></Eq><Neq><FieldRef Name='Read' /><Value Type='Text'>YES</Value></Neq></And></Where></Query>" var requestData = { "query" : {"__metadata": { "type": "SP.CamlQuery" } , "ViewXml": camlXML } }; return jQuery.ajax({ url: queryUrl, type: "POST", data: JSON.stringify(requestData), headers: { "X-RequestDigest": $("#__REQUESTDIGEST").val(), "Accept": "application/json; odata=verbose", "Content-Type": "application/json; odata=verbose" }, success: onQuerySuccessMyOutstandingItems, error: onQueryErrorMyOutstandingItems }); }); }); } function onQuerySuccessMyOutstandingItems(data) { var jsonData = data.d.results console.log(jsonData) $("#resultsDivMyOutstandingItems").dataTable({ "data" : jsonData, columns: [ { data: "Document_x0020_Name" }, { data: "Document_x0020_Library_x0020_Nam" }, { data: "Request_x0020_Made_x0020_Date" }, { data: "InitatorId" }, { data: "Request_x0020_ReadBy_x0020_Date" }, ], order: [[3, "asc"]] }); }
瞬間、DataTableの、私はInitatorID(すなわち30)を持っているが、私は、テーブル内のユーザーの本当の名前を持っていると思います。
再帰的なAJAXクエリが必要になると理解していますが、これを達成するための最善の方法が何であるか分かりませんし、誰かが私を正しい方向に向けることを期待していました。
チェーンの要求について少し読んだ後、私は以下のコードを試してみましたが、Chromeは「予想外の結末」を訴えているので、それは、私は推測間違っている:達成することが最善であるものを、要するに
var request = $.ajax({
url: queryUrl,
type: "POST",
data: JSON.stringify(requestData),
headers: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"Accept": "application/json; odata=verbose",
"Content-Type": "application/json; odata=verbose"
}
}),
chained = request.then(function(data) {
return $.ajax(spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + data.InitatorId + ")",
{ data: { user: data.Title }})
});
chained.done(function(data) {
console.log(data)
});
は、私は何をしようとしていますか?
感謝 グレン
よろしくお願いいたします。私は入れ子にされたajaxの考えを使用しました。私は今夜私の完全な解決策を投稿します。 – Glen226
うまくいけば助けてくれた!それが実際にあなたを助けた場合、答えを正しいとマークし、コードに幸運を覚えておいてください! – CrackAttack