使用$给全局变量赋值.Ajax (JQuery)

Assign value to global variable using $.Ajax (JQuery)

本文关键字:JQuery Ajax 赋值 全局变量 使用      更新时间:2023-09-26

我正在创建基于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
    });
});