-1
ajax呼び出しを使用してデータを取得するための同期呼び出しを呼び出そうとしています。jqueryで未解決のデータを取得する
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);
});
});
出力:
コール1:1
電話2:ここでは
は私のjqueryのコードで完璧に働い未定義
同期呼び出しが、私は未定義
としてデータを取得しています
次のようになりますあなたの呼び出しは、すべての同期ではありません - それは非同期です。また、 'tilesCount()'は何も返さないので、ここで何が起こると思いますか? –
^非公式な呼び出しで値を返さないので、「コール2」をログに記録するときに値が返されないので、それを聞いてください。 – Jorrex
ItemCount var ...をDeferred ...に設定します。 .. tilesCount'関数の外で決して使用されていません...無意味です - ここにヒントがあります... '$ .ajax'は約束を返しますので、遅延防止パターンは必要ありません。 。 –