我正在使用Javascript中的以下函数从SharePoint上的两个单独列表中提取数据,并将结果数据传递给另一个函数 . 我花了几个小时尝试使用以下错误调试此函数:
jQuery.Deferred异常:此上下文中不允许使用重复的参数名称SyntaxError:Array中此上下文中不允许使用重复的参数名称 .
并且我被告知错误发生在这一行:
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);
});
};
我可以得到第二组眼球来帮助我,因为我已经厌倦了盯着这个但没有得到它 .
Edit
我根据建议修改了我的代码但是得到了类似的错误:
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:此上下文中不允许使用重复的参数名称(https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js :2:29375)at c(https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js:2:29677)undefined