我正在创建新功能,根据 Ajax 返回的 Json 数据构建网格。我决定将此功能封装在一个函数中,因此当我添加/更新/删除时,我可以成功检索数据的新表示。
我遇到的问题是我想填充一个全局数组,但是一旦我使用 AJAX 的函数结束,我就有一个数组但没有数据。当所有代码都在 AJAX 调用中时,这不是问题,但一旦我尝试将其分离到它自己的函数中,它就无法按预期工作。
<script type="text/javascript">
var DataArray = [];
// Use this function to fill array
function retrieveNotes() {
$.ajax({
url: "http://wks52025:82/WcfDataService.svc/GetNotesFromView()?$format=json",
type: "get",
datatype: "json",
asynch:true,
success: function (data) {
returnedData = data;
$.each(data.d, function (i, item) {
DataArray[i] = [];
DataArray[i][0] = item.NotesTitle.trim();
DataArray[i][1] = item.ProfileName.trim();
DataArray[i][2] = item.IsShared;
DataArray[i][3] = item.NameOfUser.trim();
}) // End of each loop
}
});
}
$(document).ready(function () {
retrieveNotes();
DataArray;
</script>
最佳答案
它是异步的,因此您必须等待 ajax 调用完成才能使用数据:
function retrieveNotes() {
return $.ajax({
url: "http://wks52025:82/WcfDataService.svc/GetNotesFromView()?$format=json",
type: "get",
datatype: "json"
});
}
$(document).ready(function () {
retrieveNotes().done(function(data) {
var DataArray = [];
$.each(data.d, function (i, item) {
DataArray[i] = [];
DataArray[i][0] = item.NotesTitle.trim();
DataArray[i][1] = item.ProfileName.trim();
DataArray[i][2] = item.IsShared;
DataArray[i][3] = item.NameOfUser.trim();
});
// you can only use the data inside the done() handler,
// when the call has completed and the data is returned
});
});
关于javascript - 使用 $.Ajax (JQuery) 为全局变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16564023/