javascript - 使用 $.Ajax (JQuery) 为全局变量赋值

标签 javascript jquery ajax

我正在创建新功能,根据 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/

相关文章:

javascript - 如何按时间排序(格式 : 5:40 PM) in javascript for use with DataTables?

javascript - Google map 平移控件显示但不起作用(在移动设备上)

javascript - Node.js:1D 与 2D 数组中的 100M 个元素——意外的内存问题

javascript - 仅当 td 在特定 html 标记后不包含内容时隐藏 tr

jquery - 在 HTML5 Canvas 上绘制并获取坐标

javascript - 在 NodeJS 中复制缓冲区的问题

javascript - 具有唯一值的组合框中的 Jquery 自动完成功能

javascript - 使用 ajax 在 IFRAME 中加载页面

javascript - 使用 $.Deferred、promises 和 $.ajax 构建依赖响应映射

javascript - 我应该将 jQuery .fade() 函数放在 ajax 成功回调中的哪里?