Я работаю над приведенной ниже функцией в Javascript, чтобы извлечь данные из двух отдельных списков в SharePoint и передать полученные данные другой функции.Последние несколько часов я пытался отладить эту функцию со следующей ошибкой:
jQuery.Deferred исключение: дублирующее имя параметра не допускается в этом контексте SyntaxError: дублирующееся имя параметра не допускается в этом контекстев массиве.
и мне сообщили, что в этой строке происходит ошибка:
successFunction(RecordResponse, RecordAmountResponse)
Странно, она проходит через обе функции .done и выдает соответствующие флажки проверки, но я знаю, что не могу изменить параметры в .then (function () {}), иначе моя successFunction не получит необходимые данные ответа.
Вот функция, которую я вызываю:
function getReportData(strRecordQuery, strRecordAmountQuery, successFunction, failFunction) {
// Use promise methods to run getListQuery from both tblRecord and tblRecordData
var RecordDataInfo = $.Deferred();
var RecordAmountDataInfo = $.Deferred();
var dfdRecordDataFiles;
var dfdRecordAmountDataFiles;
dfdRecordDataFiles = getListQuery('lstRecord', strRecordQuery, true);
dfdRecordAmountDataFiles = getListQuery('lstRecordAmount', strRecordAmountQuery, true);
dfdRecordDataFiles.done(function(RecordDataResponse) {
console.log("dfdRecordDataFiles.done");
RecordDataInfo.resolve(RecordDataResponse);
});
dfdRecordAmountDataFiles.done(function(RecordAmountDataResponse) {
console.log("dfdRecordAmountDataFiles.done");
RecordAmountDataInfo.resolve(RecordAmountDataResponse);
});
dfdRecordDataFiles.fail(function(error) {
console.log("dfdRecordDataFiles.fail");
console.log("ResponseText: " + error.responseText);
console.log(JSON.stringify(error));
RecordDataInfo.fail(error);
});
dfdRecordAmountDataFiles.fail(function(lerror) {
console.log("dfdRecordAmountDataFiles.fail");
console.log("ResponseText: " + lerror.responseText);
console.log(JSON.stringify(lerror));
RecordAmountDataInfo.fail(lerror);
});
$.when(RecordDataInfo, RecordAmountDataInfo)
.then(function(RecordResponse, RecordAmountResponse) {
successFunction(RecordResponse, RecordAmountResponse)
}, function(error, lerror) {
failFunction(error, lerror);
});
};
Могу ли я получить второй набор глазных яблок, чтобы помочь мне, так как мои устали смотреть на это и не получать его.
Редактировать
Я изменил свой код в соответствии с предложением, но получаю похожую ошибку:
function getListQuery(listName, queryString) {
// REST Call
return $.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('" + listName + "')/items?" + queryString,
type: "GET",
headers: { ACCEPT: "application/json;odata=verbose" }
});
};
function getReportData(strRecordQuery, strRecordAmountQuery, strRecordPersonnelQuery) {
return $.when(getListQuery('lstRecord', strRecordQuery, true), getListQuery('lstRecordAmount', strRecordAmountQuery, true), getListQuery('lstRecordPersonnel', strRecordPersonnelQuery, true))
};
function setReportQueries(Yr0, Yr1, Yr2, Yr3, Yr4) {
// Specific to the report
strRecordQuery = "$select=ID,RecordName";
strRecordAmountQuery = "$select=ID,Parameter1,Year,Amount&$filter=(Year eq '" + Yr0 + "') or (Year eq '" + Yr1 +
"') or (Year eq '" + Yr2 + "') or (Year eq '" + Yr3 + "') or (Year eq '" + Yr4 + "')";
strRecordPersonnelQuery = "$select=ID, Parameter1&$filter=(Year eq '" + Yr0 + "') or (Year eq '" + Yr1 +
"') or (Year eq '" + Yr2 + "') or (Year eq '" + Yr3 + "') or (Year eq '" + Yr4 + "')";
getReportData(strRecordQuery, strRecordAmountQuery, strRecordPersonnelQuery).then(loadReportTables);
};
function loadReportTables(RecordData, RecordAmountData, RecordPersonnelData) {
console.log("Enter loadReportTables()");
/* Do Stuff */
}
Я получаю следующую ошибку:
jQuery.Deferred исключение: повторяющееся имя параметранедопустимо в этом контексте SyntaxError: Дублирующее имя параметра не разрешено в этом контексте при l (https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js:2:29375) при c (https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js:2:29677) не определено