簡體   English   中英

為什么jQuery.getJSON沒有返回數據?

[英]Why does jQuery.getJSON return no data?

我有這個方法:

function getUserName(guid) {
    var name = "Unbekannt";

    $.getJSON(urlCurrent, {
        "method" : "get_user_info",
        "guid" : guid,
        "auth_token" : temporaryAuthToken
    }, function(data) {
        if (data.status == 0) {
            alert(data.result[0].name);
            name = data.result[0].name;
        }
    });

    return name;
}

幾乎所有工作都在工作:Ajax-Request獲取數據並觸發回調函數,這樣就可以了

alert(data.result[0].name);

顯示一個具有此值的彈出窗口:“Forename Surname”

但是接着

return name;

該方法返回“Unbekannt”,但名稱應該具有新值“Forename Surname”。 發生了什么事,錯誤在哪里?

多謝

我將從函數返回promise對象並對其進行操作。

function getUserName(guid) {
    return $.getJSON(urlCurrent, {
        "method" : "get_user_info",
        "guid" : guid,
        "auth_token" : temporaryAuthToken
    });
}

getUserName(guid).done(function(data) {
    if (data.status == 0) {
        alert(data.result[0].name);
    }
});

而且,如果你想在前面進行狀態檢查,那么就可以了。

function getUserName(guid) {
    return $.getJSON(urlCurrent, {
        "method" : "get_user_info",
        "guid" : guid,
        "auth_token" : temporaryAuthToken
    }).then(function(data){
        return $.Deferred(function(def){
            if (data.status == 0) {
                return def.resolve(data);
            }
            return def.reject(data);
        });
    });
}

getUserName(guid).done(function(data) {
    alert(data.result[0].name);
});

返回name ,尚未為getJSON回調分配新值,因為ajax調用是異步的,需要一些時間才能完成。

你需要帶一個回調函數:

function getUserName(guid, callback) {
    var name = "Unbekannt";

    $.getJSON(urlCurrent, {
        "method" : "coinor.get_user_info",
        "guid" : guid,
        "auth_token" : temporaryAuthToken
    }, function(data) {
        if (data.status == 0) {
            alert(data.result[0].name);
            name = data.result[0].name;
            callback(name);
        }
    });
}

getUserName(guid, function(name) {
    alert(name);
});

因為return name; 在返回ajax調用之前執行。

如果您希望它與$.getJSON()調用中返回的數據相關,那么它也需要在回調函數內部。

暫無
暫無

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

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