-1
我想調用同步調用獲取數據使用ajax調用計數。獲取解析的數據undefined在jquery
這裏是我的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:未定義
同步調用,可以正常使用,但我得到的數據爲未定義
您的來電是不同步的,在所有的 - 這是異步。另外,'tilesCount()'不會返回任何東西,所以我什至不知道你期望在這裏發生什麼? –
^打我吧,但是,是的,因爲你沒有在你的異步調用中返回一個值,所以當你記錄「調用2」 – Jorrex
ItemCount var ...時,它將始終未定義。 ..從來沒有在'tilesCount'函數之外使用...沒有意義 - 這裏有一個提示...'$ .ajax'返回一個承諾(各種),所以不需要延遲的反模式,你不完全正確。 –