Ich versuche, synchronen Aufruf für das Abrufen von Daten mit Ajax-Aufruf aufzurufen.Auflösung von Daten undefiniert in jquery
Hier ist mein JQuery-Code:
var baseurl = _spPageContextInfo.webServerRelativeUrl;
console.log(baseurl);
var ItemCount = $.Deferred();
function tilesCount(tilename, count)
{
var url = baseurl + "/_api/web/lists/getByTitle('policies')/rootFolder/Folders?$expand=ListItemAllFields";
count = 0;
$.ajax({
url: url,
dataType: 'json',
success: function(data) {
$(data.value).each(function (i, folder) {
count = count + 1;
});
console.log("Call 1: " + count)
ItemCount.resolve(count);
return count;
},
error: function(error){
console.log("Error: " + JSON.stringify(error));
ItemCount.reject;
}
});
}
$(document).ready(function() {
var count = tilesCount("");
$.when(count).then(function(data){
console.log("Call 2: " + data);
});
});
Ausgang:
Anruf 1: 1
Call 2: undefined
Synchron Anruf funktionierend, aber ich bin immer Daten als undefiniert
Ihr Anruf wäre, ist überhaupt nicht synchron - es ist async. Außerdem gibt 'tilesCount()' nichts zurück, also bin ich mir nicht einmal sicher, was Sie hier erwarten? –
^Beat mich dazu, aber ja, da Sie nicht geben Sie einen Wert in Ihrem Async-Aufruf wird immer undefiniert sein, wenn Sie "Call 2" – Jorrex
ItemCount var ... auf eine verzögerte ... dann eingestellt. .. nie außerhalb der 'tilesCount' Funktion verwendet ... sinnlos - hier ist ein Tipp ...' $ .ajax' gibt ein Versprechen (von Art), so dass keine Notwendigkeit für die verzögerte Anti-Muster, die Sie nicht richtig richtig . –