[英]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.