簡體   English   中英

使用$ .Ajax(JQuery)將值分配給全局變量

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

我正在創建新功能,其中基於從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
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM