2013-08-26 34 views
-3

我正在嘗試編寫一個JavaScript函數,用於檢索與所提供的電子郵件地址相對應的姓,目前爲止沒有成功。這裏是我的代碼:Javascript從用戶名db檢索用戶名

function getUsername(){ 

var username; 

$(function(){ 
    var dataString = 'email=' + EMAIL_ADDRESS; 

    $.ajax({ 
     url: 'user_crud_operations.php', 
     data: dataString, 
     dataType: 'json', 
     success: function(data){ 
      U = data[1]; 
      username = data;   
     } 
    }); 
}); 

return username; 

} 

我需要在其他地方使用檢索的用戶名。我哪裏錯了?

+0

AJAX是異步的,您需要使用您的數據調用回調或使用Promise。 – Interrobang

+0

你哪裏去是更多的問題。 Ajax將不會返回您現在期望的數據。你需要把你的代碼翻出來 – mplungjan

+2

@所有這個問題每天要問十幾次;書籤「http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call」並儘可能少地吹噓它們作爲重複項 – meagar

回答

0

異步函數(在AJAX中使用)通常不返回值,而是觸發回調函數。

您必須重構設計,以便「getUserName()」傳遞給回調函數而不是返回值。例如:

function getUsername(handler) { 
    // ... 
    $.ajax({ 
    // ... 
    }).done(function(username) { 
    if (handler && (typeof(handler)==='function')) { 
     handler(username); 
    } 
    }); 
} 

// Sample usage... 
getUsername(function(username) { 
    alert("OK: username=" + username); 
});