ich ein bisschen spät bin, glaube ich, aber da es noch jemand helfen könnte, ich werde dies posten Sowieso. Auch wenn Sie nicht angegeben haben, ob Sie sich im Frontend oder Backend befinden.
tl; dr: Versuchen Sie, die Felder Parameter in der Anfrage wegzulassen.
Hintergrund: Ich wollte mehr workitem-details in der Pull-Requests-Detailansicht bereitstellen, also habe ich ein Userscript für TamperMonkey erstellt. Das heißt, ich habe keinen "direkten" Zugriff auf TFS, da ich nur über JavaScript auf das Frontend zugreife.
Wie Sie, habe ich auch festgestellt, dass TFS nicht alle Felder ausgibt. Um das zu lösen, habe ich dann die TFS-Ajax-Anfrage mit jQuery modifiziert, um den fields-Parameter wegzulassen. Dann hat TFS begonnen, alle vorhandenen Felder für das Arbeitselement zurückzugeben.
fand ich die Informationen in dem TFS documentation for work-items
Felder (string)
Eine durch Kommata getrennte Liste von bis zu 100 Feldern mit jedem Arbeitselement zu erhalten. Wenn nicht angegeben, werden alle Felder zurückgegeben.
Falls Ihr eigentlich Use-Case ist, ich sende auch das Skript, das ich die Ajax-Anforderung zu ändern, schrieb:
// by Joel Richard -> http://stackoverflow.com/a/26849194/4524280
function parseParams(str) {
return str.split('&').reduce(function (params, param) {
var paramSplit = param.split('=').map(function (value) {
return decodeURIComponent(value.replace('+', ' '));
});
params[paramSplit[0]] = paramSplit[1];
return params;
}, {});
}
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
// Modify ajax request to return all fields... definitely not a hack :D
if(options && options.url && options.url.indexOf('_apis/wit/workItems') >= 0) {
var parsedData = parseParams(options.data);
delete parsedData.fields;
options.data = $.param(parsedData);
}
});
$(document).ajaxComplete(function(event, request, settings) {
// trigger after ajax is complete to get values
if(settings && settings.url && settings.url.indexOf('_apis/wit/workItems') >= 0 && request.responseJSON) {
var workItemsData = request.responseJSON.value;
// -> workItemsData.fields contains all existing fields
}
});
Nur für das Protokoll: jemand Ich glaube nicht, sollte $ .ajaxPrefilter in "normalen" Anwendungsfällen verwenden, aber in diesem Fall hatte ich nicht viele Optionen zur Verfügung.
Haben Sie versucht, das Debuggen? – silkfire
@silkfire Ja, ich drucke alle Referenznamen der Felder aus, auf die ich zugreifen kann, und aus irgendeinem Grund tritt das Risiko nicht auf – Stefan
Ist es ein benutzerdefiniertes Feld? –